Как запустить WinSCP из файла ps1 - PullRequest
0 голосов
/ 17 октября 2018

У меня есть файл .ps1 с моим скриптом.В этом скрипте у меня есть строка с:

Start-Process "C:\activatebatch.bat"

Если я выполню его напрямую с файлом ps1, все будет хорошо.Но если я настрою планировщик Windows с ps1 в качестве исполнителя, файл bat не запустится.В этом bat-файле у меня есть WinSCP, который отправляет файл на сервер.

Как я могу настроить его на запуск .bat из .ps1, хранящегося в планировщике Windows?Или как я могу выполнить WinSCP непосредственно из кода PowerShell?

Мне нужно вызвать WinSCP для отправки файла на сервер - и параметры хранятся в пакетном файле:

"C:\Program Files (x86)\WinSCP\WinSCP.exe" user:password@IPI.PIP.IP.IP /command ^
    "put C:\ss\file.txt /home/scripts/windows/" ^
    "exit"

1 Ответ

0 голосов
/ 17 октября 2018

Если у вас есть работающая командная строка WinSCP в командном файле, вам может потребоваться сделать несколько изменений, чтобы сделать ее совместимой с PowerShell:

  • Пакетный файл использует ^ (caret) для выхода из новоголиния.PowerShell использует `(backtick).Поэтому замените свои символы вставки на обратные.
  • И вам, очевидно, нужно избегать любых символов со специальным значением в PowerShell, в частности, $ (знак доллара), `(backtick) и внутренние двойные кавычки .

В вашем простом сценарии имеет значение только первая точка, поэтому правильная команда:

& "C:\Program Files (x86)\WinSCP\WinSCP.exe" user:password@IPI.PIP.IP.IP /command `
    "put C:\ss\file.txt /home/scripts/windows/" `
    "exit"

Хотя я бы порекомендовал вам использовать winscp.com вместо winscp.exe и добавление ключа /log для включения ведения журнала сеанса в целях отладки.

Также открытие сеанса с использованием аргумента командной строки не рекомендуется.Вы должны использовать команду open (а лучше также указать префикс протокола - sftp://?).

& "C:\Program Files (x86)\WinSCP\WinSCP.exe" /command `
    "open user:password@IPI.PIP.IP.IP" `
    "put C:\ss\file.txt /home/scripts/windows/" `
    "exit"

Бета-версия WinSCP 5.14 может на самом деле создатьPowerShell - шаблон команд WinSCP для вас .


Хотя для лучшего контроля рекомендуется использовать сборку WinSCP .NET из PowerShell .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...