#powershell #batch-file #environment-variables #sftp #winscp
Вопрос:
Контекст: Я использую powershell для создания экземпляра пакетного файла для выполнения удаленной команды синхронизации в WinSCP и извлечения свежих данных из удаленного каталога в мой локальный каталог. Смотрите скриншоты ниже для получения информации о командах WinSCP и содержимом пакетного файла. Когда я пытаюсь выполнить, я могу успешно пройти аутентификацию, но вижу 2 ошибки.
Содержимое пакетного файла:
winscp.com /script=winscp_commands_ar_history.txt
/log=C:/Users/REDACTED/Desktop/AR_History_Report/winscp_log_ar_history.txt
Команды WinSCP:
option batch abort
option confirm off
open sftp://REDACTED:REDACTED@sftp.REDACTED.com
-hostkey="ssh-rsa 2048 cc:ea:2e:03:96:ca:e7:c0:59:74:13:a8:XX:XX:XX:XX"
synchronize remote /export/GroupAccess/REDACTED/Cognos Reporting/CogTest
C:/Users/REDACTED/Desktop/AR_History_Report
exit
Ошибки:
Неизвестная команда ‘-ключ хоста=ssh-rsa 2048 cc:ea:2e:03:96:ca:e7:c0:59:74:13:a8:XX:XX:XX:XX’.
«/log» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.
Вопрос: Как мне устранить эти 2 ошибки? Я подозреваю, что последнее связано с переменными среды, так как, похоже, powershell не распознал команду журнала WinSCP, поэтому я добавил WinSCP в переменную среды PATH, но я все еще получаю те же ошибки. Может кто-нибудь, пожалуйста, помочь? Спасибо.
Комментарии:
1. Еще один совет. Обычно мы предпочитаем, чтобы вы публиковали текст как текст, а не размещали его скриншоты. Также намного проще редактировать.
Ответ №1:
Как в вашем пакетном файле, так и в сценарии WinSCP есть разрывы строк в середине команд. Более того, в synchronize
команде вам нужно заключить путь пробелами в двойные кавычки.
Пакетный файл должен быть:
winscp.com /script=winscp_commands_ar_history.txt /log=C:/Users/REDACTED/Desktop/AR_History_Report/winscp_log_ar_history.txt
И файл сценария должен быть:
option batch abort
option confirm off
open sftp://REDACTED:REDACTED@sftp.REDACTED.com -hostkey="ssh-rsa 2048 cc:ea:2e:03:96:ca:e7:c0:59:74:13:a8:XX:XX:XX:XX"
synchronize remote "/export/GroupAccess/REDACTED/Cognos Reporting/CogTest" C:/Users/REDACTED/Desktop/AR_History_Report
exit
Кроме того, как прокомментировал @mklement0, вам не нужен другой powershell
процесс для вызова пакетного файла из PowerShell — просто вызывайте пакетные файлы напрямую: .ar_trigger_history.bat
Комментарии:
1. спасибо, это, кажется, устраняет эти ошибки