Powershell: Ein Remote-Skript von einem anderen Remote-Skript aus aufrufen

Powershell: Ein Remote-Skript von einem anderen Remote-Skript aus aufrufen

Ich habe Code geerbt, bei dem ein Skript auf ein anderes verweist, und zwar wie folgt:

#Script1.ps1
param($arg1)

# do some stuff

# call script2 with argument from script1
.\script2.ps1 $arg1


#script2.ps1
param($arg1)
# do some stuff unique to this script

Dies funktioniert lokal einwandfrei, aber wenn beide Skripte auf dem Remote-Server bereitgestellt werden und Skript1 über den Invoke-Befehl aufgerufen wird, beschwert sich die Remote-PS-Instanz, dass sie Skript2 nicht finden kann:

invoke-command $remoteServer { param($arg1, $remoteScript) powershell $remoteScript $arg1 } -argumentList $arg1, $remoteScript
# output from script1
# more output from script 1    
# here comes the error when script1 calls script2:
The term '.\script2.ps1' is not recognized as the name of a cmdlet, functi

on, script file, or operable program. Check the spelling of the name, or if a p

ath was included, verify that the path is correct and try again.

Skript2 wird von einer Reihe anderer Skripte verwendet (erfolgreich in der lokalen Umgebung), daher kann ich Skript2 nicht wieder in Skript1 umgestalten.

Wie kann ich also Skript1 anweisen, Skript2 aufzurufen, und zwar auf eine Weise, die funktioniert, unabhängig davon, ob das Skript lokal oder auf einem Remote-Server ausgeführt wird?

Antwort1

Okay, das funktioniert:

# script1.ps1

# do stuff

# get the current folder
$currentFolder = Split-Path $MyInvocation.MyCommand.Path

# call the second script in the remote folder with arguments from the first
. (Join-Path $currentFolder script2.ps1) $arg1

verwandte Informationen