Мне нужно запустить winscp.com с некоторыми параметрами в скрипте powershell.
Если я сделаю следующее в консоли, он будет работать как положено.
Set-Alias WINSCP "C:\Program Files (x86)\WinSCP\WinSCP.com"
WINSCP /command "option batch continue" "option confirm off" "option reconnecttime 5" "open username:Password@SFTPServer -privatekey=\\server\share\Private_Key.ppk" "mkdir /folder/subfolder" "exit"
Мне нужно сохранить эту команду как переменную, так как она будет сгенерирована автоматически в соответствии с требованиями. Итак, я сделал, как показано ниже:
Set-Alias WINSCP "C:\Program Files (x86)\WinSCP\WinSCP.com"
$comm = "`"option batch continue`" `"option confirm off`" `"option reconnecttime 5`" `"open username" + ":password@SFTPServer -privatekey=\\server\share\privatekey.ppk`" `"mkdir /folder/subfolder`" `"exit`""
WINSCP /command $comm
Однако, похоже, это не работает. Где-то разбирается строка. Когда я запускаю этот скрипт, он запрашивает имя SFTP-сервера. Он должен был разобрать его из команды, предоставленной ранее. Вывод как ниже:
PS C:\> Set-Alias WINSCP "C:\Program Files (x86)\WinSCP\WinSCP.com"
PS C:\> $comm = "`"option batch continue`" `"option confirm off`" `"option reconnecttime 5`" `"open username" + ":password@SFTPServer -privatekey=\\server\share\privatekey.ppk`" `"mkdir /folde
r/subfolder`" `"exit`""
PS C:\> WINSCP /command $comm
Opening session using command-line parameter in scripting is deprecated. Use 'open' command instead.
Host:
Но если я напечатаю переменную $comm
, она будет выглядеть правильно.
"option batch continue" "option confirm off" "option reconnecttime 5" "open username:password@SFTPServer -privatekey=\\server\share\privatekey.ppk" "mkdir /folder/subfolder" "exit"
Что здесь не так?
ОБНОВЛЕНИЕ: Похоже, это проблема PowerShell 5.1
Я запустил тот же сценарий в Windows Server 2008 R2
с PowerShell 2.0
, Windows Server 2012 R2
с Powershell 3.0
и Windows Server 2016
и Windows 10
с PowerShell 5.1
. У тех с 5.1 не получается, а у двух других работает. Скриншоты ниже:
![PowerShell 5.1](https://i.stack.imgur.com/j3KsG.jpg)