Вопрос Как запустить несколько команд в одной строке в 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