Commandlet (Cmdlet)
Eintrag zuletzt aktualisiert am: 07.04.2021
Ein einzelner Befehl in der PowerShell (inkl.
Windows PowerShell und
PowerShell Core) heißt Commandlet (kurz Cmdlet). Ein Commandlet besteht typischerweise aus drei Teilen: einem Verb, einem Substantiv und einer Parameterliste. Verb und Substantiv werden durch einen Schrägstrich voneinander getrennt, die optionalen Parameter durch Leerzeichen. Daraus ergibt sich folgender Aufbau:
Verb-Substantiv [-Parameterliste]
(Achtung: In PowerShell Preview Version 1 war die Syntax noch Verb/Substantiv)
Die Groß- und Kleinschreibung der Commandlet-Namen und der Parameternamen ist irrelevant.
Beispiele
Ein einfaches Beispiel ist:
get-process
Dadurch wird eine
Liste aller
Prozesse in der PowerShell ausgegeben. Beachten Sie, dass das Substantiv im Singular steht, auch wenn hier eine Menge von Objekten abgerufen wird. Das Ergebnis muss nicht immer eine
Objektmenge sein. Beispielsweise liefert
get-location
nur ein Objekt mit dem aktuellen Pfad.
Neben get existieren andere Verben wie set, add, remove, copy, move und rename. Neben diesen Basisoperationen gibt es auch Ausgabekommandos wie out und format. Auch Bedingungen werden durch diese Syntax abgebildet (where-object). Tabelle 1 zeigt eine
Liste aller in der Version 0.3 implementierten Befehle. Diese
Liste erhält man in der PowerShell auch durch
get-command
Ein Beispiel für einen Befehl mit Parameter ist:
get-children c:\daten
get-children listet alle Unterobjekte des angegebenen Objekts (c:\daten) auf, also alle Dateien und Ordner unterhalb dieses Dateiverzeichnisses.
Mit
Set-location c:\windows
wechselt man den aktuellen Pfad. Durch so genannte Aliase kann die Eingabe verkürzt werden. So ist dir als Alias für get-children vordefiniert. Der letzte Befehl kann also auch geschrieben werden:
dir c:\.
Ebenso als Alias definiert ist der
DOS-Befehl cd, der hier set-location maskiert. Durch get-alias (oder den entsprechenden Alias aliases) erhält man eine
Liste aller vordefinierten Abkürzungen.
Ebenfalls als Einzelbefehl möglich sind mathematische Ausdrücke wie 10* (8 + 6). Alle Eingaben, die nicht als Commandlets oder mathematische Formeln erkannt werden, werden als ausführbare Dateien behandelt. Die Eingabe c:\Windows\Notepad.exe ist daher möglich, um den beliebten Windows-Editor zu starten.
Details zu Commandlets
Gemäß des PowerShell-Konventionen soll es nur eine begrenzte Menge wiederkehrender Verben geben: Get, Set, Add, New, Remove, Clear, Push, Pop, Write, Export, Select, Sort, Update, Start, Stop, Invoke, usw. Außer diesen Basisoperationen gibt es auch Ausgabekommandos wie out und format. Auch Bedingungen werden durch diese Syntax abgebildet (Where-Object).
Die PowerShell erzeugt beim Start einen Prozess. In diesem Prozess laufen alle Commandlets. Dies ist ein Unterschied zum
DOS-Fenster, bei dem die ausfühbare Dateien (.exe) in eigenen
Prozessen laufen.
An vielen Stellen sind Platzhalter bei den Parameterwerten erlaubt.
Eine
Liste aller
Prozesse, die mit einem "I" anfangen erhält man so:
Get-Process i*
Die
Liste aller verfügbaren Commandlets erhält man in der PowerShell auch durch
Get-Command
Hilfe zu einem Commandlet bekommt man über Get-help commandletname, z.B.
Get-Help Get-Process
Hingegen listet
Get-help get
alle Commandlets auf, die das Verb get verwenden.
Erstellung von Commandlets
Die Erstellung von Commandlets ist wahlweise per PowerShell-Skript (siehe Funktionsbasiertes Commandlet) als auch über
.NET Framework-Programmierung mit einer .NET-fähigen
Programmiersprache (üblicherweise C# oder
Visual Basic .NET) möglich. In den anderen beiden Fällen geht nur .NET-Programmierung. Damit liegen diese Themen außerhalb der Reichweite dieses Buchs, da hierzu .NET-Programmierkenntnisse erforderlich sind.