Klassische DOS-Shell in der PowerShell

Innerhalb der Powershell kann durch die Eingabe von cmd die klassische DOS-Kommandoshell (MS-DOS Eingabeaufforderung) ausgeführt werden. Das kann insbesondere beim Umstieg von der DOS-Kommandoshell auf die PowerShell sehr hilfreich sein. So wechselte ich persönlich anfangs häufiger nach Bedarf kurz in die gewohnte Umgebung, wenn ein Befehl nicht wie gewohnt funktionierte und ich momentan keine Zeit hatte herauszufinden wie ich das mit der PowerShell lösen kann. Ich konnte also kurz in die alte Welt zurückwechseln und meine Aufgabe umgehend erledigen ohne die PowerShell verlassen zu müssen. Dies funktioniert beispielsweise auch mit WMIC (Windows Management Instrumentation Command-Line).

Nach der Eingabe von cmd ändert sich der Kommandoprompt. Wie man erkennt, steht das PS nicht mehr vor dem Prompt. Nun lassen sich DOS-Kommandos wie gewohnt verwenden. Mit Eingabe von exit wird die DOS-Kommandoshell beendet. Wieder zurück in der Powershell, führt der gleiche Befehl zu einem Fehler.

Durch Einsatz der klassischen DOS-Kommandoshell innerhalb der PowerShell, lassen sich auch bereits für die klassische DOS-Shell erstellte Batchfiles problemlos nutzen. Beim Aufruf einer Stapeldatei (Dateiextension .BAT) wird durch die PowerShell automatisch eine DOS-Kommandoshell gestartet. Aufgrund der erhöhten Sicherheitsziele der PowerShell, kann eine Stapeldatei jedoch – genau wie PowerShell-Skripte – nicht einfach durch Eingabe des Dateinamens gestartet werden. Zur Ausführung ist die Angabe des kompletten Pfades oder ein relativer Pfad anzugeben. Hat man beispielsweise die Stapeldatei myjob.bat im aktuellen Verzeichnis liegen, kann die Ausführung mit .\myjob.baterfolgen. Ohne die Angabe von .\zeigt die PowerShell eine Fehlermeldung und obendrein auch noch gleich den Weg zur Lösung des Problems an.