Categories: PowerShellWindows 10

Запуск нескольких команд в одну строку в PowerShell и CMD

В этой небольшой заметке рассмотрим, как выполнить несколько cmd или PowerShell команд в одной строке. Такая задача периодически возникает при вызове команд PowerShell из внешних программ, из планировщика заданий Windows, логон скриптов , когда нужно обойти политику выполнения скриптов PowerShell , или когда нужно быстро передать пользователю кусок кода для выполнения при диагностике/ исправлении проблем на компьютере.

Выполнение нескольких команд в консоли CMD

В cmd для последовательного запуска команд в одной строке используется оператор & . Например:

net stop wuauserv & net start wuauserv & wuauclt /detectnow

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

ipconfig /flushdns && ipconfig /renew

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

net stop wuauserv6 || net start wuauserv

Запуск нескольких команд PowerShell в одной строке

В PowerShell если использовать знак амперсанда для разделения команд в одной строке, появится ошибка:

The ampersand (&) character is not allowed. The & operator is reserved for future use;

Вместо знака & для разделения команд PowerShell в одной строке используется символ точка с запятой ( ; ):

restart-service wuauserv -verbose; get-process notepad

Эта однострочная PowerShell команда перезапустит службу Windows и после завершения первой команды выведет информацию о процессе .

Популярным примером сокращения команд в PowerShell является конвейеры (pipe/pipeline), которые позволяют передать результаты одной команды следующей по конвейеру. В PowerShell в качестве оператора конвейера используется символ “|”. Например, пример команды с конвейером:

Get-Service -Name wususerv | Stop-Service

Этот же код в полном виде можно записать в несколько строк:

$service = Get-Service -Name wususerv
$serviceName = $service.Name
Stop-Service -Name $serviceName

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

Для запуска нескольких команда PowerShell через меню Пуск -> Выполнить, используйте формат:

powershell -command &"{ipconfig /all; tracert yandex.ru; pause "Press any key to continue"}"

Если вы запускаете эти же команды через консоль powershell, используйте синтаксис:

powershell -command {ipconfig /all; tracert yandex.ru; pause "Press any key to continue"}

При запуске нескольких команд PowerShell через планировщик Windows , можно использовать такой формат:

c:windowsSystem32WindowsPowerShellv1.0powershell.exe -Command {Get-EventLog -LogName security; ipconfig /all ; get-service servicename}"

В версии PowerShell Core 7.x доступны новые операторы && и ||. Они работают так, же как в cmd.

Проверить версию PowerShell можно, выполнив $PSVersiontable.

Оператор && выполнит команды PowerShell справа от себя, если команда слева выполнена успешно:

Write-host "Hello!" && Write-host "World!"

Оператор || используется, когда нужно выполнить команду, если первая команда вернула ошибку:

get-service servicename || write-host "missing service"

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 недели ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 недели ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 недели ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 недели ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 недели ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 недели ago