marcimarc85
Goto Top

Mehrere Parameter an ein Script auf Remote Computer übergeben

Hallo ,

Ich komme bei einem Problem nicht so recht weiter.

Ich möchte auf einem Remote-Computer ein Script starten, an das 3 Parameter aus dem aufrufenden Script auf dem Hostcompouter übrgeben werden sollen. Sobald ich bloß einen Parameter verwende, klappt das, aber bei 3 Parametern funktioniert es einfach nicht:

param (
[Parameter(Mandatory=$true)][String]$new_version,
[Parameter(Mandatory=$true)][String]$customer,
[Parameter(Mandatory=$true)][String]$stage
)

Invoke-Command  -ScriptBlock  { D:\tools\Apptausch_Citrix.ps1 $args[0] $args[1] $args[2] } -args $new_version,$customer,$stage -ComputerName $Computers -Credential $adminCredential -ErrorAction Stop

A positional parameter cannot be found that accepts argument 'Customer123'.  
At D:\powershell_tools\citrix_client_update_trigger.ps1:35 char:5
+     Invoke-Command  -ScriptBlock  { D:\tools\Apptausch_Citr ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Apptausch_Citrix.ps1], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Apptausch_Citrix.ps1
    + PSComputerName        : 10.32.2.17

Content-ID: 33118368179

Url: https://administrator.de/contentid/33118368179

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

11078840001
11078840001 29.02.2024 aktualisiert um 14:15:36 Uhr
Goto Top
Tja du liest unsere Posts einfach nicht aufmerksam genug ....haben wir dir schon x mal gezeigt. Wir das geht steht nämlich bereits in den Antworten zu deinem Beitrag hier ...

Mehrere Parameter an zweites Powershell Script übergeben

Aufmerksamkeitsspanne erhöhen!

Immer neue Threads zum selben Thema aufmachen bringt dich nicht weiter. RTFM!

☠️
MarciMarc85
MarciMarc85 29.02.2024 um 14:23:50 Uhr
Goto Top
Das habe ich gelesen.
Das aus dem anderen Beitrag funktioniert ja auch, wenn ich Paramater aus Script2 an Script3 auf Server 2 lokal übergebe.

Aber nicht wenn ich mittels Invoke-Command die Parameter von Script1 auf Server 1 an Script2 auf Server 2 übergeben will.
11078840001
11078840001 29.02.2024 aktualisiert um 14:39:48 Uhr
Goto Top
Offensichtlich hast du es "überlesen" denn sonst hättest du es anders umgesetzt, im Beitrag steht es nämlich auch ganz anders

 Invoke-Command  -ScriptBlock {&"D:\tools\Apptausch_Citrix.ps1" -new_version $using:new_version -customer $using:customer -stage $using:stage } -ComputerName $Computer -Credential $adminCredential -ErrorAction Stop  

Ansonsten hast du einen Parameter Definitions Fehler im Skript "Apptausch_Citrix.ps1"

Never ending story ... 💩
MarciMarc85
MarciMarc85 01.03.2024 um 08:31:52 Uhr
Goto Top
@11078840001 Danke. Ja tatsächlich wohl überlesen. Ich bin momentan mir sehr vielen Sachen beschäftigt und mache das gerade nur nebenbei am Rande. Dennoch will ich das natürlich lauffähig bekommen, weil es mir täglich einige Arbeit ersparen würde.

Ich habe jetzt nur noch ein Problem. Im Hauptscript auf dem Remote Computer wird nach einem Setup_file auf einem Netzwerkshare gesucht. Existiert dieses File nicht, dann beendet sich das Scipt.

Starte ich nun von Server 1 das Hauptscript auf Server 2, mittels PSExec ,dann läuft es problemlos durch. und ichherhalte sogar die Ausgabe vom Scipt auf Server 1.

Starte ich es mittels Invoke-Command, dann erhalte ich keinerlei Ausgabe und an der Stelle, wo auf dem Share nach der Setup Datei gesucht wirrd, bekomm eich die Meldung:

Client Setup does not exist in this location!
Cannot bind argument to parameter 'Path' because it is null.  
At D:\powershell_tools\citrix_client_update_trigger.ps1:43 char:1
+ Invoke-Command  -ScriptBlock {&"D:\powershell_ tools\citrix_cl...  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Split-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.SplitPathCommand
    + PSComputerName        : 10.32.2.17
 
11078840001
11078840001 01.03.2024, aktualisiert am 02.03.2024 um 08:01:55 Uhr
Goto Top
Die Fehlermeldung sagt es dir doch schon wo du deinen Fehler hast. 😵‍💫
Cannot bind argument to parameter 'Path' because it is null.

Da wird dein Skript nicht sehen hast du da einen Fehler bei der übergabe einer Variablen an den Parameter Path gemacht wenn der NULL ist.

Ich bin momentan mir sehr vielen Sachen beschäftigt und mache das gerade nur nebenbei am Rande.
Das nennt man dann wohl Administrator Outsourcing ... ☹️

https://tio.run/##ZY69DoJAEIT7fYrNxYgmHgp0VhgrW1tDccQTiQd3uR8o1Gc/F4OVxU ...
pixel0815
pixel0815 19.03.2024 um 08:47:59 Uhr
Goto Top
Ich hole mir meine Remote Infos wie hier z.B. NTFS Berechtigungen so.
Da wird auch ein Pfad bzw. Freigabename aus einem anderen Teil des Skripts das auf meinem Admin Server läuft verwendet.

Invoke-Command -Computer $Server -ArgumentList $Share,$NTFS -ScriptBlock{
            param($Share,$NTFS)
            Get-Acl $Share.Path -ErrorAction SilentlyContinue | select -Expand Access | Where-Object {$_.IdentityReference -Match "Jeder" -or $_.IdentityReference -match "test" -or $_.IdentityReference -match "VORDEFINIERT"}|  
             % { $Share.Path  + "," + $_.IdentityReference + "," + $_.FileSystemRights }  
            }

Hat erst geklappt als ich hier

-ArgumentList $Share,$NTFS 
und das
ScriptBlock{
            param($Share,$NTFS) verwendet habe.