Como executo vários comandos em uma linha no PowerShell?

269

Em um prompt do cmd, você pode executar dois comandos em uma linha da seguinte maneira:

ipconfig /release & ipconfig /renew

Quando executo esse comando no PowerShell, recebo:

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

O PowerShell possui um operador que me permite produzir rapidamente o equivalente &em um prompt de cmd?

Qualquer método para executar dois comandos em uma linha será suficiente. Eu sei que posso fazer um script, mas estou procurando algo um pouco mais fora do punho.

David
fonte
5
Nota divertida: Entre portas seriais e serialização, é praticamente impossível procurar essa pergunta.
David
Ser nerd ... É muito fácil procurar por isso. É muito difícil obter um conjunto relevante de hits. :) (+1 para grande questão)
Konrad Viltersten
1
Semelhante à execução condicional (&& e ||) no PowerShell .
JamesThomasMoon1979

Respostas:

384

Use um ponto-e-vírgula para encadear comandos no PowerShell:

ipconfig /release; ipconfig /renew
Squeezy
fonte
9
Eles serão executados em paralelo ou sequencialmente?
Tarkus
19
Isso os executará sequencialmente, assim como o operador & no cmd.exe.
Squeezy
43
Porém, há uma grande diferença - ";" executa o segundo comando, mesmo se o primeiro falhar.
1019 Ivan Ivan
10
Como mencionado acima, esse também é o comportamento do & in cmd.exe.
Squeezy
7
@ Rafi Sim, tente {Command-One -ea Stop} Capturar {Command-Two}
Dave_J 5/16/16
30

Um ponto-e-vírgula vinculará os comandos como indicado na resposta anterior , embora exista uma diferença importante no comportamento do &operador no interpretador de comandos no estilo MS-DOS.

No interpretador de comandos, a substituição da variável ocorre quando a linha é lida. Isso permite algumas possibilidades simples, como trocar variáveis ​​sem um intervalo:

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

Resultaria em:

2
1

Até onde eu sei, não há como replicar esse comportamento no PowerShell. Alguns podem argumentar que é uma coisa boa.

De fato, existe uma maneira de fazer isso no PowerShell:

$b, $a = $a, $b

Isso resultará em uma única troca de linha dos valores das variáveis.

Dave_J
fonte
Não parece trabalhar em campo "Target" com a opção -command no atalho embora
clearlight