Kennen Sie das Problem, mehrere Befehle gleichzeitig unter Windows ausführen zu müssen? Vielleicht schreiben Sie gerade ein Skript oder möchten einfach nur Zeit bei der Fehlersuche sparen. Die Art und Weise, wie Windows das handhabt, kann manchmal etwas umständlich sein, insbesondere bei der Verwendung von CMD oder PowerShell. Manchmal funktionieren die Befehle nicht auf Anhieb reibungslos zusammen, und Sie verschwenden Zeit mit der Fehlersuche. Diese kurze Anleitung hilft Ihnen, mehrere Befehle in einer einzigen Zeile auszuführen, sodass Sie nicht immer wieder dasselbe tippen oder Batchdateien für einfache Aufgaben erstellen müssen.
So führen Sie mehrere Befehle in der Windows-Eingabeaufforderung und PowerShell aus
Ausführen mehrerer Befehle in der CMD mithilfe des kaufmännischen Und-Zeichens
In der CMD-Konsole verkettet man üblicherweise Befehle nacheinander. Der &Operator macht genau das. Der Haken? Soll der zweite Befehl nur ausgeführt werden, wenn der erste erfolgreich war, verwendet man &&. Das ist ein praktischer Trick, insbesondere um Vorgänge wie das schnelle Neustarten von Diensten oder das Leeren des DNS-Caches zu automatisieren. Wenn Sie also einen Dienst stoppen und anschließend wieder starten möchten, ohne den Ablauf zu unterbrechen, sieht das folgendermaßen aus:
net stop wuauserv && net start wuauserv
Dies ist äußerst hilfreich, um Update-Probleme zu diagnostizieren oder Dienste zurückzusetzen, ohne manuell herumklicken zu müssen. Bei manchen Systemen funktioniert dies möglicherweise nicht sofort, abhängig von Ihren Berechtigungen. In diesem Fall ist es unter Umständen erforderlich, die Eingabeaufforderung als Administrator auszuführen. Beachten Sie außerdem, dass Windows dies manchmal etwas komplizierter gestaltet und nach einem Neustart ein paar Anpassungen oder einen erneuten Versuch nötig macht.
Mehrere PowerShell-Befehle in einer Zeile ausführen
PowerShell ist bei diesem Symbol etwas pingeliger &– es wird eine Fehlermeldung ausgegeben: „Das kaufmännische Und-Zeichen (&) ist nicht zulässig.“ Seltsam, oder? Typisch Windows, dass es einem das Leben schwer macht. Die korrekte Methode, mehrere Befehle in PowerShell in einer einzigen Zeile auszuführen, ist die Verwendung eines Semikolons ;. Wenn Sie beispielsweise einen Dienst neu starten und anschließend die Prozesse überprüfen möchten, sieht das so aus:
restart-service wuauserv -Verbose; get-process notepad
Dieser Befehl startet den Windows Update-Dienst neu und listet anschließend die Notepad-Prozesse auf. Er ist simpel, aber effektiv. Manchmal können Befehle hängen bleiben oder schneller/langsamer als erwartet ausgeführt werden, insbesondere wenn der erste Befehl etwas Zeit benötigt. Wundern Sie sich also nicht, wenn die Ausführung etwas asynchron erscheint.
In PowerShell gibt es außerdem den Pipeline-Operator |, mit dem Sie die Ausgabe eines Befehls an einen anderen weiterleiten können. Dadurch werden Ihre Skripte übersichtlicher und besser lesbar. Um beispielsweise einen Dienst anhand seines Namens zu beenden, können Sie Folgendes tun:
Get-Service -Name wususerv | Stop-Service
Die entsprechende Langform wirkt zwar umständlich, aber die Pipeline verkürzt sie und ermöglicht es, den Ablauf auf einen Blick zu erfassen. Um mehrere Befehle nicht-interaktiv oder in Skripten auszuführen, können Sie den -CommandParameter mit PowerShell verwenden, zum Beispiel:
powershell -command &"{ipconfig /all; ping woshub.com; pause "Press any key to continue"}"
Dadurch werden alle drei Befehle nacheinander innerhalb einer einzigen PowerShell-Sitzung ausgeführt. Alternativ können Sie PowerShell für komplexere Szenarien oder geplante Aufgaben mit einem vollständigen Befehlsblock aufrufen, etwa so:
c:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command {Get-EventLog -LogName Security; ipconfig /all; get-service -Name YourService}
Hinweis zu Operatoren in PowerShell Core (v7+)
Wenn Sie PowerShell Version 7 oder höher verwenden, stehen Ihnen die Operatoren &&`and` und `or` zur Verfügung ||, die genauso funktionieren wie in der Eingabeaufforderung (CMD).Das bedeutet, Sie können Befehle je nach Erfolg oder Misserfolg verketten. Wenn ein Befehl erfolgreich ausgeführt wird, wird der nächste ausgeführt. Andernfalls können Sie Ausweichoptionen festlegen.
Write-host "Hello!" && Write-host "World!"
get-service servicename || write-host "missing service"
Das macht Skripting und Automatisierung deutlich flexibler, falls Sie sich dafür interessieren. Nur zur Info: Ihre PowerShell-Version können Sie mit dem Befehl `shell –version` überprüfen $PSVersionTable. Manchmal funktionieren diese Operatoren nicht mit älteren Versionen, daher ist ein Upgrade möglicherweise erforderlich, wenn Sie komplexere Funktionen nutzen möchten.
Das Ganze ist anfangs etwas knifflig, aber sobald man den Dreh raus hat, spart es viel Zeit. Bei manchen Konfigurationen, insbesondere bei eingeschränkten Berechtigungen oder bestimmten Sicherheitsrichtlinien, verhalten sich diese Befehle möglicherweise nicht wie erwartet. Achten Sie daher auf Fehlermeldungen oder Aufforderungen, sie als Administrator auszuführen.
Zusammenfassung
- Verwenden Sie & für aufeinanderfolgende Befehle in CMD; && wenn der erste Befehl erfolgreich ausgeführt werden muss.
- In PowerShell werden Befehle durch ein Semikolon (;) getrennt.
- Verwenden Sie pipelines | um Befehlsausgaben einfach zu verbinden.
- Komplexe Aufgaben lassen sich mit dem Parameter -Command und geschweiften Klammern planen.
- Überprüfen Sie Ihre PowerShell-Version, um
$PSVersionTablefestzustellen, ob && und || funktionieren.
Zusammenfassung
Wenn man sich mit der gleichzeitigen Ausführung mehrerer Befehle vertraut macht, kann das den Arbeitsablauf und die Fehlersuche deutlich beschleunigen. Es ist wirklich praktisch, die umständliche Bedienung der Benutzeroberfläche zu umgehen und alles mit einer einzigen Zeile zu erledigen. Natürlich macht Windows manchmal Probleme – Berechtigungen, Syntaxfehler, seltsame Fehlermeldungen. Aber sobald man die Tricks kennt, ist es gar nicht so schlimm. Denken Sie nur daran, Ihre Shells gegebenenfalls als Administrator auszuführen und die Befehlsausgabe im Auge zu behalten. Hoffentlich spart das jemandem etwas Zeit und Frust.