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


269

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

ipconfig /release & ipconfig /renew

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

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

Есть ли в PowerShell оператор, позволяющий быстро создать эквивалент команды &в командной строке?

Подойдет любой способ запуска двух команд в одной строке. Я знаю, что могу сделать сценарий, но я ищу что-то еще более неуместное.


5
Замечание: между последовательными портами и сериализацией этот вопрос практически невозможно найти.
Дэвид

Быть всезнайкой ... Это очень легко найти. Просто довольно сложно получить соответствующий набор хитов. :) (+1 за отличный вопрос)
Конрад Вилтерстен

Ответы:


384

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

ipconfig /release; ipconfig /renew

9
Будут ли они работать параллельно или последовательно?
Таркус

19
Это запустит их последовательно, как и оператор & в cmd.exe.
Squeezy

43
Хотя есть большая разница - ";" запускает вторую команду, даже если первая не удалась.
Иван

10
Как упоминалось выше, это также поведение & в cmd.exe.
Squeezy

7
@Rafi Да, попробуй {Command-One -ea Stop} Catch {Command-Two}
Dave_J

30

Точка с запятой свяжет команды, как указано в предыдущем ответе , хотя есть ключевое отличие в поведении &оператора в интерпретаторе команд в стиле 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

Это приведет к замене значений переменной на одну строку.


Похоже, не работает из поля «Target» с параметром -command в
ярлыке
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.