Ausführen von CMD-Befehlen in PowerShell

  1. Verwenden des PowerShell-Aufrufoperators &
  2. Ausführen von CMD-Befehlen mit cmd.exe
  3. Weiterleitung an CMD mit PowerShell
Ausführen von CMD-Befehlen in 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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn