¿Cómo ejecuto varios comandos en una línea en PowerShell?

269

En un indicador de cmd, puede ejecutar dos comandos en una línea de esta manera:

ipconfig /release & ipconfig /renew

Cuando ejecuto este comando en PowerShell, obtengo:

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

¿PowerShell tiene un operador que me permita producir rápidamente el equivalente de &en un indicador de cmd?

Cualquier método de ejecutar dos comandos en una línea servirá. Sé que puedo hacer un guión, pero estoy buscando algo un poco más fuera del alcance.

David
fuente
55
Nota divertida: entre los puertos serie y la serialización, esta pregunta es prácticamente imposible de buscar.
David
Para ser nerd ... Es muy fácil buscarlo. Es bastante difícil obtener un conjunto relevante de éxitos. :) (+1 para una gran pregunta)
Konrad Viltersten
1
Similar a la ejecución condicional (&& y ||) en powershell .
JamesThomasMoon1979

Respuestas:

384

Use un punto y coma para encadenar comandos en PowerShell:

ipconfig /release; ipconfig /renew
Apretujado
fuente
99
¿Correrán en paralelo o secuencialmente?
Tarkus
19
Esto los ejecutará secuencialmente, al igual que el operador & en cmd.exe.
Squeezy
43
Sin embargo, hay una gran diferencia: ";" ejecuta el segundo comando incluso si falla el primero.
Ivan
10
Como se mencionó anteriormente, este también es el comportamiento de & en cmd.exe.
Squeezy
77
@Rafi Sí, intente {Command-One -ea Stop} Catch {Command-Two}
Dave_J
30

Un punto y coma vinculará los comandos como se indicó en la respuesta anterior , aunque hay una diferencia clave en el comportamiento con el &operador en el intérprete de comandos de estilo MS-DOS.

En el intérprete de comandos, la sustitución de variables tiene lugar cuando se lee la línea. Esto permite algunas posibilidades interesantes, como el intercambio de variables sin un ínterin:

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

Daría como resultado:

2
1

Que yo sepa, no hay forma de replicar este comportamiento en PowerShell. Algunos pueden argumentar que es algo bueno.

De hecho, hay una manera de hacer esto en PowerShell:

$b, $a = $a, $b

Resultará en un intercambio de una sola línea de los valores variables.

Dave_J
fuente
Sin embargo
clearlight