Sie sind hier: Wissen
Begriff Commandlet
Abkürzung Cmdlet
Eintrag zuletzt aktualisiert am 07.04.2021

 Zur Stichwortliste unseres Lexikons

Was ist Commandlet ?

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.

Weitere Ressoucen auf dieser Website

 PowerShell-Community-Website
 PowerShell-Codebeispiele

Beratung & Support

Schulungen zu diesem Thema

 Gruppenrichtlinien
 ADO.NET Entity Framework (EF) Code-based Modelling (alias Code First/Code Only)
 Microsoft Exchange Server-Administration mit der Windows PowerShell / Microsoft Exchange Management Shell
 Windows Vista für Entwickler (Programmieren für Windows Vista)
 Windows Server 2012 oder Windows Server 2012 R2 für Administratoren (Neuheiten gegenüber Windows Server 2008 R2)
 Konsolenanwendungen mit .NET
 Active Directory für Administratoren
 Skriptbasierte Active Directory-Migration
 Microsoft Application Virtualization: App-V-Paketbereitstellung mit Citrix Virtual Apps and Desktops (XenDesktop) oder System Center Configuration Manager (SCCM)
 Paketverwaltung mit NuGet
 Windows PowerShell 5.1/PowerShell 7.0 für Softwareentwickler
 System Center verwalten mit der Windows PowerShell
 Microsoft Azure-Cloud-Dienste verwalten mit der Windows PowerShell
 Windows PowerShell 5.0/5.1 für Umsteiger von Version 4.0
 Windows PowerShell 5.1/PowerShell 7.0 für System- und Netzwerkadministratoren
 Microsoft SQL Server-Administration mit der Windows PowerShell
 .NET Akademie: Datenbankprogrammierung mit Entity Framework Core (3-Tages-Agenda des öffentlichen Seminars)
 Entity Framework Core 8.0/9.0 (EF Core 8.0/9.0): Objekt-Relationales Mapping (ORM) für .NET 8.0/9.0 (komplettes Wissen)
 Windows PowerShell 5.1/PowerShell 7.0 für System- und Netzwerkadministratoren (4-Tages-Agenda des öffentlichen Seminars)
 Microsoft Application Virtualization (App-V-Packaging)
 Windows Server 2016 Update (Neuheiten für Administratoren gegenüber Windows Server 2012 R2)
 NetApp verwalten mit der PowerShell
 Windows PowerShell 4.0 für Umsteiger von Version 3.0
 Scripting von Gruppenrichtlinien mit der GPMC
 Active Directory-Administration mit der Windows PowerShell
 Microsoft SharePoint-Administration mit der Windows PowerShell
 Neuerungen in Microsoft SharePoint 2019 - für Umsteiger von Version 2016
 Windows Server-Administration mit der Windows PowerShell, insbesondere Active Directory-Administration
 Windows 10/Windows 11 für Administratoren
 Anfrage für eine individuelle Schulung zum Thema Commandlet Cmdlet  Gesamter Schulungsthemenkatalog