231

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

ipconfig /release & ipconfig /renew

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

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

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

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

2 ответа2

327

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

ipconfig /release; ipconfig /renew
29

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .