Ausführen von CMD-Befehlen in PowerShell
-
Verwenden des PowerShell-Aufrufoperators
&
-
Ausführen von CMD-Befehlen mit
cmd.exe
-
Weiterleitung an
CMD
mit PowerShell
Viele Legacy-Eingabeaufforderungsbefehle (CMD) funktionieren in der Windows PowerShell-Skriptumgebung. Die PowerShell-Umgebung überträgt diese Befehle von den am häufigsten verwendeten Befehlen wie ping
zu den informativsten Befehlen wie tracert
aus der Legacy-Umgebung unter Verwendung von Aliasen.
Einige ausgeführte Befehle im Eingabeaufforderungsterminal funktionieren jedoch nicht in der Skriptumgebung von Windows PowerShell. In diesem Artikel wird erläutert, wie wir sie korrekt in Windows PowerShell transkribieren können.
Verwenden des PowerShell-Aufrufoperators &
Die ältere CMD funktioniert erfolgreich, wenn wir Befehlszeilenprogramme mit einem ausführbaren Dateiformat (.exe) ausführen, das sich in einem bestimmten Pfad befindet, gefolgt vom eigentlichen Befehl.
Wenn wir die Beispielsyntax unten nehmen, können wir mit dem Avast-Befehlszeilenscanner einen schnellen Scan durchführen, wenn wir das Skript in CMD ausführen, und es wird erfolgreich funktionieren.
Beispielcode:
"C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick
Wenn wir jedoch dieselbe Syntax verwenden und sie in Windows PowerShell ausführen, erhalten wir einen Ausnahmefehler. Der Grund für den Fehler ist, dass Windows PowerShell die doppelten Anführungszeichen ""
als wörtlichen Zeichenkettenwert sieht und der in der Syntax enthaltene Parameter /Quick
in keiner der nativen Bibliotheken verfügbar ist.
Wenn Sie außerdem nur den Pfad in Anführungszeichen in Windows PowerShell ausführen, wird nur der Zeichenkettenwert ausgegeben, anstatt die ausführbare Datei selbst auszuführen.
Beispielcode:
"C:\Program Files\AVAST Software\Avast\ashCmd.exe"
Ausgabe:
C:\Program Files\AVAST Software\Avast\ashCmd.exe
Um dieses Problem zu beheben, können wir den Aufrufoperator oder das kaufmännische Und-Zeichen &
am Anfang der Befehlszeile aufrufen, um den ausführbaren Pfad in Windows PowerShell ordnungsgemäß auszuführen.
& "C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick
Bei Verwendung des Aufrufoperators in der PowerShell-Umgebung wird der Zeichenkettenpfad als tatsächlicher Pfad zur ausführbaren Datei behandelt. Daher wird das Skript direkt mit dem zugehörigen Befehlsparameter ausgeführt.
Ausführen von CMD-Befehlen mit cmd.exe
Ein weiteres Beispiel für das Ausführen von CMD-Befehlen ist die Verwendung von cmd.exe
. Wir können cmd.exe
wie bei unserer vorherigen Methode in Windows PowerShell hinzufügen.
Nach dem Hinzufügen und Ausführen ruft es die Befehlszeilenschnittstelle in der Windows PowerShell-Eingabeaufforderung auf.
cmd.exe /c where python
Der Parameter /c
führt den eingegebenen Befehl aus und beendet den cmd.exe
-Kommandozeileninterpreter.
Sie können die folgende Syntax ausführen, um die Hilfedokumentation des Befehls cmd.exe
für weitere Informationen zu anderen Parametern aufzurufen. Darüber hinaus können Sie den folgenden Befehl sowohl auf PowerShell- als auch auf CMD-Befehlszeilenschnittstellen ausführen.
cmd.exe /?
Weiterleitung an CMD
mit PowerShell
In Windows PowerShell können wir auch Befehle an das Eingabeaufforderungsterminal senden, indem wir das Cmdlet cmd
an den Befehl weiterleiten, den Sie senden wollten.
In der folgenden Beispielsyntax wird die Anforderung zum Abfragen der IP-Konfigurationen Ihres lokalen Computers an die CMD-Befehlszeilenschnittstelle gesendet. Nach dem Ausführen des Codes wird das CMD-Terminal beendet und der Benutzer wird zum PowerShell-Terminal zurückgebracht, das am Anfang der Zeile mit PS
gekennzeichnet ist.
Beispielcode:
"Ipconfig /all" | cmd
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn