Powershell. Выполнение команд CMD

В этой статье я попробую собрать варианты запуска команд CMD из консоли Powershell

Варианты вызова команд

Powershell распознает строку в кавычках просто как строку.
Что бы указать на то, что строка должна быть выполнена, требуется использовать «символ вызова»  &

Для простых команд вполне подходят такие формы записи, в том числе и с аргументами

Выполняя утилиты CMD в консоли ISE вы можете наблюдать проблемы с кодировкой. Решение можно найти тут

Форма вызова команды с аргументами выглядит так

Аргументов после закрытых кавычек может быть больше одного

При использовании оператора & вывод выполненных им команд будет отображен внутри консоли Powershell, без открытия нового окна.

Можно передать команду по конвейеру

Start-Process

Мне нужно было выполнять в ходе повершельного скрипта вот такую команду с множеством параметров:

Лучшим вариантом оказалось перечисление параметров нужной команды через запятую, в виде аргументов параметра повершела ArgumentList:

Если вам интересно, то можете прочитать статью про уменьшение размера PDF документов, в рамках которой и использовалась данная команда, а так же разбор других параметров сжатия

Если вы хотите используя Start-Process получить вывод, как и при использовании оператора &, в текущий сеанс консоли, то используйте параметр -NoNewWindow

Отладка

Для отладки ошибок можно воспользоваться параметром перенаправления вывода, так как вызываемое окно CMD обычно моргает на мгновение и исчезает, и успеть прочитать появившийся текст просто не является возможным. А делать скриншоты появляющегося окна, при наличии штатного средства, это просто маразм XD

 

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

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