Як запустити кілька команд на одному рядку в PowerShell?


268

У підказці cmd ви можете виконати дві команди в одному рядку так:

ipconfig /release & ipconfig /renew

Коли я запускаю цю команду в PowerShell, я отримую:

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

Чи має PowerShell оператор, який дозволяє мені швидко виробляти еквівалент &у cmd-запиті?

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


5
Примітка: між портами послідовності та серіалізацією це питання практично неможливо шукати.
Девід

Бути дурним ... Шукати це дуже просто. Просто досить важко отримати відповідний набір хітів. :) (+1 за велике запитання)
Konrad Viltersten

Відповіді:


384

Використовуйте крапку з комою для ланцюжка команд у PowerShell:

ipconfig /release; ipconfig /renew

9
Чи будуть вони працювати паралельно чи послідовно?
Таркус

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

43
Однак є велика різниця - ";" запускає другу команду, навіть якщо перша не працює.
Іван

10
Як було сказано вище, це також поведінка & in cmd.exe.
Squeezy

7
@Rafi Так, спробуйте {Command-One -ea Stop} Ловити {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

Це призведе до заміни в одному рядку значень змінної.


Здається, це не працює з поля "Ціль" з опцією
-команда
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.