Вопрос: Как запустить несколько команд в одной строке в Powershell?


В командной строке cmd вы можете запускать две команды на одной строке:

ipconfig /release & ipconfig /renew

Когда я запускаю эту команду в PowerShell, я получаю:

Ampersand not allowed. The & operator is reserved for future use

У PowerShell есть оператор, который позволяет мне быстро получить эквивалент & в командной строке cmd? Любой метод запуска двух команд в одной строке будет выполнен. Я знаю, что могу создать сценарий, но я ищу что-то еще немного с манжетой.


198
2018-06-26 17:24


Источник


Замечание Fun: между последовательными портами и сериализацией этот вопрос практически невозможно найти. - David
Быть упрямым ... Его очень легко найти. Просто довольно сложно получить соответствующий набор хитов. :) (+1 за отличный вопрос) - Konrad Viltersten


Ответы:


Используйте точку с запятой для объединения команд в powershell:

ipconfig /release; ipconfig /renew

283
2018-06-26 17:28



Будут ли они работать параллельно или последовательно? - Tarkus
Это будет работать последовательно, как и оператор & в cmd.exe. - Squeezy
Есть большая разница, хотя - ";" запускает вторую команду, даже если первая сбой. - Ivan
Как упоминалось выше, это также поведение & в cmd.exe. - Squeezy
Есть ли способ, чтобы вторая команда выполнялась только в том случае, если первая ошибка? - Rafi


Двойной двоеточие свяжет команды с предыдущим ответом, хотя есть ключевое отличие от поведения оператора & в интерпретаторе команд MS-DOS.

В интерпретаторе команд замена переменных происходит, когда строка считывается. Это позволяет использовать некоторые опрятные возможности, такие как обмен переменных без промежуточного:

set a=1
set b=2
set a=%b% & set b=%a%
echo %a%
echo %b%

Это приведет к:

2
1

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

Редактировать: Фактически, это способ сделать это в Powershell:

$b, $a = $a, $b

приведет к однократной замене переменных значений.


28
2017-09-10 17:16



Кажется, что не работает из поля «Target» с параметром -command в ярлыке, хотя - clearlight