2016-04-12 2 views
0

Ich kämpfe für eine Weile mit der Verwendung von Variable mit Pscp Befehl.Powershell gibt lokale Kopie nicht unterstützt bei der Verwendung von Variablen in Pscp

ForEach ($Server in $Servers) 
{ 
.\pscp.exe -pw $password create_ssh [email protected]$Server:/home/$myUsername/create_ssh 
.\plink.exe -pw $password [email protected]$Server -C "uname -r" 
} 

Ausgabe

Local to local copy not supported 
2.6.32-573.1.1.el6.x86_64 

Wenn ich versuche, den Hostnamen angeben, nicht variabel ist nicht mit es ein Problem mit der Datei zu übertragen. Jedoch Wenn ich versuche Variable $ Server zu verwenden, erhalte ich eine Fehlermeldung „Lokale Kopie nicht unterstützt“ Ich dachte, es Problem mit Variable sein könnte selbst aber. \ Plink funktioniert ohne Probleme

ich versucht habe, Kommas zu verwenden, Escape @, volle Wege etc. nichts scheint zu funktionieren. Ich kann winscp.dll nicht verwenden, da ich in diesem speziellen Fall automatisch Host-Schlüssel akzeptieren muss (was unsicher ist, aber nur für diesen Fall wirklich spezifisch ist) - dies wird nur von pscp zur Verfügung gestellt.

Vielen Dank!

+0

WinSCP .NET Assembly unterstützt automatische Host-Annahme Schlüssel (verwenden Sie ['SessionOptions.GiveUpSecurityAndAcceptAnySshHostKey'] (https://winscp.net/eng/docs/library_sessionoptions#giveupsecurityandacceptanysshhostkey), genau im Gegensatz zu pscp, was nicht der Fall ist. –

Antwort

0

Ich weiß, das ist ziemlich alt, aber ich stolperte über dieses Problem auch. Es stellt sich heraus, dass Sie die subexpression Operator $() für die Server-Variable wie so verwenden müssen:

$($Server) 

So Ihre Befehle würde wie folgt aussehen:

.\pscp.exe -pw $password create_ssh [email protected]$($Server):/home/$myUsername/create_ssh 
.\plink.exe -pw $password [email protected]$($Server) -C "uname -r" 
+0

Vielen Dank !!! –

Verwandte Themen