Powershell возвращает локальное копирование, не поддерживаемое при использовании переменных в pscp
Я борюсь некоторое время с использованием переменной с командой pscp.
ForEach ($Server in $Servers)
{
.\pscp.exe -pw $password create_ssh $myUsername@$Server:/home/$myUsername/create_ssh
.\plink.exe -pw $password $myUsername@$Server -C "uname -r"
}
Выход
Local to local copy not supported
2.6.32-573.1.1.el6.x86_64
Когда я пытаюсь указать имя хоста, не используя переменную, нет никаких проблем с передачей файла. Однако, если я пытаюсь использовать переменную $Server, я получаю сообщение об ошибке "Локальное копирование не поддерживается". Я подумал, что это может быть проблема с самой переменной, но.\ Plink работает без проблем.
Я пытался использовать запятые, escape @, полные пути и т. Д., Кажется, ничего не работает. Я не могу использовать winscp.dll, так как в этом конкретном случае мне нужно автоматически принимать ключи хоста (что небезопасно, но действительно специфично только для этого случая) - это обеспечивается только pscp.
Большое спасибо!
1 ответ
Я знаю, что это довольно старо, но я наткнулся и на эту проблему. Оказывается, вам нужно использовать оператор подвыражения $()
для серверной переменной вот так:
$($Server)
Таким образом, ваши команды будут выглядеть так:
.\pscp.exe -pw $password create_ssh $myUsername@$($Server):/home/$myUsername/create_ssh
.\plink.exe -pw $password $myUsername@$($Server) -C "uname -r"