2013-06-26 17:24:22 +0000 2013-06-26 17:24:22 +0000
309
309

Hoe kan ik meerdere commando's op één regel in PowerShell uitvoeren?

In een cmd prompt kunt u twee commando’s op één regel uitvoeren, zoals:

ipconfig /release & ipconfig /renew

Wanneer ik dit commando in PowerShell uitvoer, krijg ik:

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

Heeft PowerShell een operator die mij toestaat om snel het equivalent van & in een cmd prompt te produceren?

Elke methode om twee commando’s op één regel uit te voeren, is voldoende. Ik weet dat ik een script kan maken, maar ik ben op zoek naar iets meer van de manchet.

Antwoorden (2)

438
438
438
2013-06-26 17:28:12 +0000

Gebruik een puntkomma om opdrachten in PowerShell te ketenen:

ipconfig /release; ipconfig /renew
32
32
32
2013-09-10 17:16:28 +0000

Een puntkomma verbindt de commando’s zoals het vorige antwoord aangaf , hoewel er een belangrijk verschil is met het gedrag van de &-operator in de MS-DOS-stijl commando-interpreter.

In de commando-interpreter vindt de variabele substitutie plaats wanneer de regel wordt gelezen. Dit laat enkele nette mogelijkheden toe zoals het verwisselen van variabelen zonder tussentijd:

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

Zou resulteren in:

2
1

Voor zover ik weet is er geen manier om dit gedrag te repliceren in PowerShell. Sommigen zullen beweren dat dit een goede zaak is.

Er is in feite een manier om dit te doen in PowerShell:

$b, $a = $a, $b

Het zal resulteren in een enkele regel ruilen van de variabele waarden.