Come posso eseguire più comandi su una riga in PowerShell?


267

In un prompt cmd, è possibile eseguire due comandi su una riga in questo modo:

ipconfig /release & ipconfig /renew

Quando eseguo questo comando in PowerShell, ottengo:

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

PowerShell ha un operatore che mi consente di produrre rapidamente l'equivalente di &in un prompt cmd?

Qualsiasi metodo per eseguire due comandi in una riga farà. So di poter scrivere una sceneggiatura, ma sto cercando qualcosa di più semplice.


5
Nota divertente: tra porte seriali e serializzazione, questa domanda è praticamente impossibile da cercare.
David,

Essere nerd ... È molto facile cercarlo. È abbastanza difficile ottenere un numero rilevante di hit. :) (+1 per una grande domanda)
Konrad Viltersten,

Risposte:


384

Utilizzare un punto e virgola per concatenare i comandi in PowerShell:

ipconfig /release; ipconfig /renew

8
Funzioneranno in parallelo o in sequenza?
Tarkus,

18
Questo li eseguirà in sequenza, così come l'operatore & in cmd.exe.
Squeezy,

41
C'è una grande differenza però - ";" esegue il secondo comando anche se il primo ha esito negativo.
Ivan

9
Come accennato in precedenza, questo è anche il comportamento di & in cmd.exe.
Squeezy,

7
@Rafi Sì, prova {Command-One -ea Stop} Catch {Command-Two}
Dave_J

30

Un punto e virgola collegherà i comandi come indicato nella risposta precedente , sebbene vi sia una differenza fondamentale nel comportamento con l' &operatore nell'interprete dei comandi in stile MS-DOS.

Nell'interprete dei comandi, la sostituzione delle variabili avviene quando viene letta la riga. Ciò consente alcune possibilità precise come lo scambio di variabili senza un intervallo:

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

Si tradurrebbe in:

2
1

Per quanto ne so, non è possibile replicare questo comportamento in PowerShell. Alcuni potrebbero obiettare che è una buona cosa.

Esiste infatti un modo per farlo in PowerShell:

$b, $a = $a, $b

Si tradurrà in uno scambio di riga singola dei valori delle variabili.


Non sembra funzionare dal campo "Target" con l'opzione -command nella scorciatoia
Clearlight
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.