подключение cmd к powershell

Мне нужно записать вывод команды cmd DIR в переменную powershell (массив). Является ли это возможным? Мне это нужно, потому что я использую сценарии cmd в WinSCP (клиент SFTP), и когда я подключен к sftp-серверу, я могу использовать только команды cmd, а не powershell. Но мне нужно получить имена и размер файлов, которые находятся в удаленном каталоге, чтобы проверить, прошла ли передача успешно. Это мой скрипт, который подключается к sftp и загружает некоторые файлы:

C:\"Program Files"\WinSCP\winscp.com /console /command "option batch abort" "option confirm off" "open sftp://login:[email protected]" "cd import" "option transfer binary" "put C:\_ZbankyNaOdoslanie\*.gpg" "put C:\_ZbankyNaOdoslanie\*.chk" "close" "exit"

Спасибо.


person culter    schedule 21.03.2012    source источник


Ответы (1)


Вы можете вызвать эту строку в PowerShell с помощью оператора вызова & и присвоить ее стандартный вывод и/или стандартный вывод переменной.

Пример:

$output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2

Переменная $output будет массивом строк. Каждая строка вывода будет элементом массива.

Еще примеры:

  • Просто стандартный вывод: $output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 2>$null
  • Просто стдерр: $output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 1>$null
  • Оба: $output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 2>&1
person Andy Arismendi    schedule 21.03.2012
comment
Спасибо, Энди. Я переустановил WinSCP на c:\WinSCP, чтобы избежать пробелов в имени папки, но он кричит: Термин «C:\WinSCP\winscp.com/console/command» не распознается как имя командлета, функции, сценария. файл или работающая программа. Проверьте правильность написания имени или, если был указан путь, убедитесь, что путь указан правильно, и повторите попытку. - person culter; 21.03.2012
comment
@culter Правильно, убедитесь, что вы включили пробел между закрывающей цитатой и аргументами WinSCP, например: & "C:\Path To\winscp.com" /console /command "option batch abort" ... - person Andy Arismendi; 21.03.2012
comment
Энди, сейчас места нет. Я переустановил его в каталог C:\WinSCP. - person culter; 21.03.2012
comment
@culter Хорошо ... вставьте команду, которую вы пытаетесь запустить, пожалуйста. - person Andy Arismendi; 21.03.2012
comment
Я пробовал это, но это не сработало (то же сообщение об ошибке, что и выше): @195.22.89.55 - person culter; 21.03.2012
comment
@culter Эта команда отлично сработала для меня из командной строки PowerShell: PS C:\> & "C:\Program Files\*\winscp.com" /console /command "option batch abort" "option confirm off" "open sftp://user:[email protected]" Мой winscp.com все еще находится в программных файлах. - person Andy Arismendi; 21.03.2012