Powershell. Перенаправление стандартного вывода

Иногда возникает необходимость в рамках сессии PoSh запустить CMD утилиты. Структура вызова этих команд, из-за вложенности или например из-за удаленного выполнения, может усложниться, а результат их работы станет менее предсказуемым.
В этом случае нам может помочь перенаправление стандартного вывода

Выполнение команды с помощью «символа вызова»

Вызов утилиты CMD через & «ping» ya.ru выводится в самом окне PoSh, а не во внешнем окне CMD

Перенаправление из командлета Start-Process

Можно перенаправить вывод с помощью специального параметра RedirectStandardOutput

Функция позволяющая задать набор значений для запуска процесса

В том числе задать перенаправление стандартного вывода и вывода ошибок

При этом используется .NET класс System.Diagnostics.ProcessStartInfo

Из-за того что IP адрес в Arguments указан заведомо неверно, мы получим об этом ошибку в переменную $stderr

Как исправить проблему с кодировкой смотрите здесь

Плюс использования этого скрипта заключается в том, что вывод будет записан в отдельные переменные, а так же в нем определяется «код выхода», по которому можно назначить обработку событий.

С кодами ошибок можете ознакомиться например здесь.

А прочитать про варианты выполнения команд оболочки CMD из сеанса PoSh можно тут

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *