Windows PowerShell Übersicht

Die Windows PowerShell ist im Prinzip eine mächtige Alternative zur Windows-Eingabeaufforderung “cmd.exe”. Windows 7 und Server 2008 enthalten bereits standardmäßig die PowerShell 2.0. Für Windows XP, Vista und alle älteren Server-Varianten steht die Version ebenfalls zum Download bereit. Außerdem ist unter Windows 7 auch eine grafische Entwicklungsumgebung für Skripte namens PowerShell ISE enthalten. Diese kann unter anderem über ihren Dateinamen “powershell_ise.exe” gestartet werden. Neben Syntaxhervorhebung und Autovervollständigung ist auch ein Skript-Debugger enthalten.

Nun aber zurück zur PowerShell. Gegenüber der alten Eingabeaufforderung hat sie zahlreiche Vorteile. Neben dem Einsatz von Objekt-Pipelines und Filtern bieten die Kommandos der PowerShell deutlich mehr Möglichkeiten als die Eingabeaufforderung. Beispielsweise hat man Zugriff auf die Registry, auf Systemereignisse und alle laufenden Prozesse können verwaltet werden.

Zur leichteren Bedienbarkeit sind alle gängigen Befehle aus der DOS-Kommandozeile auch in PowerShell verfügbar. Allerdings handelt es sich dabei nur um Aliase, d.h. Kürzel für die Funktionseinheiten der PowerShell. Diese werden auch Cmdlets genannt. Cmdlets sind nach dem Muster Verb-Substantiv aufgebaut, wobei die Groß-/Kleinschreibung keine Rolle spielt. Die aktuell definierten Aliase erfährt man über den Befehl Get-Alias. Nachfolgend eine kurze Übersicht der gängisten DOS-Befehle und deren Entsprechungen in PowerShell.

cmd.exe Windows PowerShell (Alias) Windows PowerShell (Cmdlet) Beschreibung
cd gl, pwd Get-Location gibt das aktuellen Verzeichnis aus
cd, chdir sl, cd, chdir Set-Location wechselt das aktuelle Verzeichnis
cls cls, clear Clear-Host leert den Bildschirm
copy cpi, copy, cp Copy-Item kopiert eine oder mehrerere Dateien oder einen ganzen Ordner
help help, man Get-Help Hilfe zu Befehlen
help gcm Get-Command Liste aller verfügbaren Befehle
del, rmdir, rd ri, del, erase, rmdir, rd, rm Remove-Item löscht eine Datei oder einen Ordner
ren rni, ren Rename-Item benennt eine Datei oder einen Ordner um
move mi, move, mv Move-Item verschiebt eine Datei oder einen Ordner
dir gci, dir, ls Get-ChildItem Liste aller Dateien und Ordner im (aktuellen) Verzeichnis
echo echo, write Write-Output gibt Zeichenketten, Variablen etc. aus
popd popd, man Pop-Location wechselt in das Verzeichnis, welches zuletzt auf dem Stack abgelegt wurde
pushd pushd Push-Location Verzeichnis auf dem Stack ablegen
set sv, set Set-Variable Variable anlegen oder Wert einer Variable setzen
type gc, type, cat Get-Content Ausgabe einer Datei
find, findstr Select-String Suche und Filterung definierter Zeichenketten
tasklist gps, ps Get-Process Liste aller momentan laufenden Prozesse
taskkill spps, kill Stop-Process beendet einen laufenden Prozess
tee Tee-Object Standardeingabe in eine Datei oder Variable umleiten und entlang der Pipeline weiterreichen (Standardausgabe)

Abschließend noch ein Beispiel für die Benutzung der Objekt-Pipeline. Damit können mehrere Befehle zu einer Kette verbunden werden. Im Gegensatz zu herkömmlichen Shells bestehen die Ein- und Ausgaben bei der PowerShell nicht aus reinem Text, sondern aus Objekten. Dadurch kann man direkt auf die Eigenschaften und Methoden der gelieferten Objekte zugreifen.

dir *.txt | sort Length -Descending | ft Name, Length | more

Dieser Befehl listet alle Textdateien innerhalb des aktuellen Verzeichnises mit Name und Größe auf. Dabei werden die Textdateien absteigend nach ihrer Größe sortiert. Außerdem bewirkt “more”, dass nur soviel ausgegeben wird, wie in das Fenster passt. Mit der Leertaste lässt sich weiterblättern.

Tobi

Hallo, mein Name ist Tobias und ich habe diesen Blog im April 2009 ins Leben gerufen. Seitdem blogge ich hier über Software, Internet, Windows und andere Themen, die mich interessieren. SSDblog ist mein zweiter Blog, indem es rund um das Thema SSDs geht. Ich würde mich freuen, wenn ihr meinen Feed abonniert oder mir auf Twitter und Facebook folgt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert