2015-08-24 3 views
3

В нашем PowerScript, я мог бы сделать что-то следующим образом:Powershell живой выход из внешней команды

$output = myexternalcommand 
write-output $output 

Это работает. Однако вывод выводится только после завершения работы внешней программы. Хотя внешняя программа периодически отбрасывает статус, нет никаких указаний на то, что происходит внутри скрипта.

Мне интересно, есть ли способ отображать выходные данные внешней программы при ее запуске. С уважением.

ответ

3

Используйте команду Tee-Object для отправки вывода внешней команды в двух направлениях. В соответствии с документацией,

Командлета Ти-объект перенаправляет вывод, то есть, он посылает выходной сигнал из команды в двух направлениях (например, буквы «Т»). Он сохраняет вывод в файле или переменной и также отправляет его по конвейеру. Если Tee-Object - последняя команда в конвейере, выход команды отображается в командной строке.

cmd /c "dir /s c:\windows\system32" | Tee-Object -Variable foobar 
# dir list is printed and result is also stored in $foobar 
$foobar.Count # will return the dir cmd's output as an Object[] 
+0

спасибо. Тей-Объект сделал трюк. – Peter