Powershell и SFTP.exe
Можно ли передать содержимое папки на сайте SFTP в локальный файл, похожий на окно программы sinnate ftp.exe, где синтаксис:
dir / MainDir / SubDir c: \ test \ ftp \ CurrentContents.txt
но тот же синтаксис не работает с SFTP.exe. Мне нужно иметь возможность обрабатывать одно имя файла за раз в скрипте powershell, и я не вижу способа передать имена файлов из программы SFTP.exe в скрипт powershell и обратно, не имея возможности проанализировать текстовый файл с содержимым каталога,
Если у кого-то есть идеи или предложения, пожалуйста, дайте мне знать. спасибо рп
3 ответа
Я использую компоненты.NET Rebex для FTPS и SFTP в своих программах на C# и скриптах PowerShell. Я нахожу это намного проще, чем разбираться с внешними программами, которые на самом деле не предназначены для плавного взаимодействия со скриптами и другими приложениями.
Изменить: Поскольку деньги это проблема, вы пытались использовать одну из утилит в комплекте с PuTTY?
Функция Push-FTP от http://powershellpipeworks.com/ делает это, но не так идеально, как хотелось бы. Я внесу необходимые изменения для поддержки бесшовной конвейеризации через несколько дней. Он также предоставляет индикатор выполнения во время загрузки.
Вот пример:
Push-Ftp -Path c:\Example -Include *.aspx
Я использую замазку psftp, которая прекрасно работает с powershell.
Использование:
давайте создадим $tempContentFile, содержащий команды ftp в кодировке ASCII
$tempContentFile = "$($workdir)\temp_get.txt"
$tempContent = "get -r /root/home/someuser/filestoDownload C:\temp\DownloadedFiles"
$out = out-file -filepath $tempContentFile -inputobject $tempContent -encoding ASCII;
Сначала мы должны убедиться, что SSL-сертификат удаленного сервера принимается / хранится локально.
$out = echo Y|.\plink.exe -v -ssh $($attribute_IP) -l $($attribute_user) -pw $($attribute_password) -batch exit 2>&1
Чем сама команда psftp:
$out = .\psftp.exe $($attribute_IP) -l $($attribute_user) -pw $($attribute_password) -b $tempContentFile