2016-04-12 8 views
0

Я немного борюсь с использованием переменной с командой pscp.Powershell возвращает Локальная копия не поддерживается при использовании переменных в 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" 
} 

Выход

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

Когда я пытаюсь указать имя хоста не использует переменную там не какой-либо проблемы с передачей файла. Однако если я пытаюсь использовать переменную $ сервера, я получаю сообщение об ошибке «Локальная копия не поддерживается» Я думал, что это может быть проблема с самой переменной, но. \ Палить работает без каких-либо проблем

Я пытался использовать запятые, escape @, полные пути и т. д. ничего не работает. Я не могу использовать winscp.dll, поскольку в этом конкретном случае мне нужно автоматически принимать ключи хоста (что небезопасно, но действительно специфично только для этого случая) - это предоставляется только pscp.

Большое спасибо!

+0

WinSCP .NET сборка не поддерживает автоматический прием хоста (используйте [SessionOptions.GiveUpSecurityAndAcceptAnySshHostKey'] (https://winscp.net/rus/docs/library_sessionoptions#giveupsecurityandacceptanysshhostkey)), что в точности противоречит pscp, а это не так. –

ответ

0

Я знаю, что это довольно старый, но я тоже наткнулся на эту проблему. Оказывается, что вам нужно использовать оператор подвыражения $() для переменного сервера следующим образом:

$($Server) 

Так что ваши команды будут выглядеть следующим образом:

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

Спасибо большое !!! –