Das Erlernen der Namen von Befehlen und Befehlsparametern ist bei den meisten Befehlszeilenschnittstellen mit einem erheblichen Zeitaufwand verbunden. Das Problem ist dabei, dass es nur sehr wenige Muster gibt, sodass die einzige Möglichkeit darin besteht, sich jeden Befehl und jeden Parameter, den Sie regelmäßig verwenden, zu merken.
Wenn Sie einen neuen Befehl oder Parameter verwenden, können Sie i. d. R. nicht Ihre bereits erworbenen Kenntnisse einsetzen, sondern Sie müssen einen neuen Namen suchen und lernen. Wenn Sie sich einmal vorstellen, wie Schnittstellen von einem zunächst kleinen Satz von Tools wachsen und dabei die Funktionalität ständig erweitert wird, können Sie sehr leicht verstehen, warum es keinen Standard für die Struktur gibt. Insbesondere bei Befehlsnamen kann dies logisch erscheinen, da jeder Befehl ein einzelnes Tool ist. Es gibt allerdings bessere Wege zur Festlegung von Befehlsnamen.
Die meisten Befehle sind integriert und dienen der Verwaltung von Elementen des Betriebssystems oder von Anwendungen, z. B. Diensten oder Prozessen. Die Befehle verfügen über eine Reihe von Namen, die nicht unbedingt einer Ordnung angehören müssen. In Windows-Systemen können Sie z. B. die Befehle net start und net stop verwenden, um einen Dienst zu starten und zu beenden. Unter Windows steht Ihnen sc als weiteres, noch allgemeineres Steuerungstool für Dienste zur Verfügung. Dessen Benennungsmuster weicht von dem für net-Dienstbefehle stark ab. In der Prozessverwaltung von Windows sind die Befehle tasklist zum Auflisten von Prozessen und taskkill zum Beenden von Prozessen verfügbar.
Befehle, die Parameter übernehmen, verfügen über irreguläre Parameterspezifikationen. Mit dem Befehl net start können Sie keinen Dienst auf einem Remotecomputer starten. Mit dem Befehl sc starten Sie einen Dienst auf einem Remotecomputer, um jedoch den Remotecomputer anzugeben, müssen Sie dessen Namen zwei umgekehrte Schrägstriche voranstellen. Wenn Sie z. B. den Spoolerdienst auf dem Remotecomputer "DC01" starten möchten, müssen Sie sc \\DC01 start spooler eingeben. Wenn Sie die auf "DC01" ausgeführten Aufgaben auflisten möchten, müssen Sie den /S-Parameter (für "System") verwenden und den Namen "DC01" wie folgt ohne umgekehrte Schrägstriche angeben: tasklist /S DC01.
Obwohl es wichtige technische Unterschiede zwischen einem Dienst und einem Prozess gibt, sind beide Beispiele für verwaltbare Elemente auf einem Computer mit einem genau definierten Lebenszyklus. Sie möchten möglicherweise einen Dienst oder Prozess starten oder beenden oder eine Liste aller derzeit ausgeführten Dienste oder Prozesse abrufen. Obwohl sich Dienste und Prozesse also grundsätzlich voneinander unterscheiden, sind die damit ausgeführten Aktionen häufig prinzipiell identisch. Die Möglichkeiten für das Anpassen einer Aktion mithilfe von Parametern können ebenfalls prinzipiell ähnlich sein.
Windows PowerShell nutzt die Ähnlichkeiten, um die Anzahl der unterschiedlichen Namen zu verringern, die Sie kennen müssen, um Cmdlets verstehen und verwenden zu können.
Leicht einprägsame Cmdlet-Namen der Form "Verb-Substantiv"
Bei Windows PowerShell wird als Benennungssystem eine Kombination aus Verb und Substantiv verwendet, wobei jeder Cmdlet-Name aus einem Standardverb besteht, an das ein bestimmtes Substantiv mit einem Bindestrich angefügt wird. Windows PowerShell-Verben sind nicht immer englische Verben, drücken jedoch bestimmte Windows PowerShell-Aktionen aus. Die Substantive entsprechen Substantiven in viele Sprachen, sie beschreiben bestimmte Objekttypen, die für die Systemverwaltung wichtig sind. Anhand einiger Beispiele von Verben und Substantiven wird schnell verständlich, wie diese zweigeteilten Namen den Lernaufwand reduzieren.
Für die Substantive gelten weniger Einschränkungen, sie sollten aber immer beschreiben, womit ein bestimmter Befehl ausgeführt wird. Windows PowerShell umfasst beispielsweise die Befehle Get-Process, Stop-Process, Get-Service und Stop-Service.
Zusammensetzungen aus zwei Substantiven oder zwei Verben sind nicht so einfach zu erlernen. Wenn Sie allerdings einen Standardsatz von 10 Verben und 10 Substantiven betrachten, müssen Sie lediglich 20 Wörter verstehen, diese Wörter können allerdings für die Bildung von 100 eindeutigen Befehlsnamen verwendet werden.
Häufig verstehen Sie schon beim Lesen des Namens, wofür ein bestimmter Befehl verwendet wird, und können problemlos Namen für neue Befehle ableiten. Als Befehl zum Herunterfahren des Computers kann z. B. Stop-Computer verwendet werden. Als Befehl zum Aufführen aller Computer in einem Netzwerk verwenden Sie beispielsweise Get-Computer. Der Befehl zum Abrufen des Systemdatums ist Get-Date.
Mit dem Befehl Get-Command und dem -Verb-Parameter können Sie alle Befehle auflisten, die ein bestimmtes Verb enthalten. (Der Befehl Get-Command wird im nächsten Abschnitt genauer beschrieben.) Wenn Sie z. B. alle Cmdlets anzeigen möchten, die das Verb Get enthalten, geben Sie Folgendes ein:
PS> Get-Command -Verb Get CommandType Name Definition ----------- ---- ---------- Cmdlet Get-Acl Get-Acl [[-Path] <String[]>]... Cmdlet Get-Alias Get-Alias [[-Name] <String[]... Cmdlet Get-AuthenticodeSignature Get-AuthenticodeSignature [-... Cmdlet Get-ChildItem Get-ChildItem [[-Path] <Stri... ...
Der -Noun-Parameter ist noch hilfreicher, da er das Anzeigen einer Familie von Befehlen ermöglicht, die sich auf denselben Objekttyp auswirken. Wenn Sie z. B. anzeigen möchten, welche Befehle für das Verwalten von Diensten verfügbar sind, geben Sie den folgenden Befehl ein:
PS> Get-Command -Noun Service CommandType Name Definition ----------- ---- ---------- Cmdlet Get-Service Get-Service [[-Name] <String... Cmdlet New-Service New-Service [-Name] <String>... Cmdlet Restart-Service Restart-Service [-Name] <Str... Cmdlet Resume-Service Resume-Service [-Name] <Stri... Cmdlet Set-Service Set-Service [-Name] <String>... Cmdlet Start-Service Start-Service [-Name] <Strin... Cmdlet Stop-Service Stop-Service [-Name] <String... Cmdlet Suspend-Service Suspend-Service [-Name] <Str... ...
Nicht jeder Befehl ist automatisch auch ein Cmdlet, wenn er das Namensschema "Verb-Substantiv" aufweist. Ein systemeigener Windows PowerShell-Befehl, bei dem es sich um kein Cmdlet handelt, dessen Name jedoch das Format "Verb-Substantiv" aufweist, ist beispielsweise der Befehl zum Leeren eines Konsolenfensters, "Clear-Host". Der Befehl "Clear-Host" stellt eigentlich eine interne Funktion dar. Dies erkennen Sie, wenn Sie für diesen Befehl "Get-Command" ausführen:
PS> Get-Command -Name Clear-Host CommandType Name Definition ----------- ---- ---------- Function Clear-Host $spaceType = [System.Managem...
Verwenden von Standardparametern durch Cmdlets
Wie bereits erwähnt, verfügen Befehle aus herkömmlichen Befehlszeilenschnittstellen normalerweise nicht über konsistente Parameternamen. In einigen Fällen verfügen die Parameter über gar keine Namen. Wenn sie Namen haben, bestehen diese häufig aus einem einzelnen Zeichen oder abgekürzten Wörtern, die sich zwar sehr schnell eingeben lassen, für neue Benutzer jedoch nur schwer zu erlernen sind.
Im Gegensatz zu den meisten herkömmlichen Befehlszeilenschnittstellen verarbeitet Windows PowerShell Parameter direkt. Dieser direkte Zugriff auf die Parameter ermöglicht zusammen mit der Unterstützung der Entwickler eine Standardisierung der Parameternamen. Dies garantiert zwar nicht, dass jedes Cmdlet den Standards entspricht, erhöht jedoch die Wahrscheinlichkeit.
Hinweis: | |
Parameternamen wird bei der Verwendung immer ein Bindestrich '-' vorangestellt, anhand dessen Windows PowerShell Parameter eindeutig identifizieren kann. Im Beispiel mit Get-Command -Name Clear-Host lautet der Parametername Name, dieser wird allerdings als -Name eingegeben. |
Im Folgenden finden Sie einige allgemeine Merkmale von Standardparameternamen und deren Verwendung.
Der Hilfeparameter (?)
Wenn Sie den -?-Parameter für ein Cmdlet angeben, wird dieses nicht ausgeführt. Windows PowerShell zeigt stattdessen die Hilfe zu dem Cmdlet an.
Allgemeine Parameter
Windows PowerShell bietet eine Reihe von Parametern, die als allgemeine Parameter bezeichnet werden. Da diese Parameter vom Windows PowerShell-Modul gesteuert werden, weisen sie immer dasselbe Verhalten auf, wenn sie von einem Cmdlet implementiert werden. Die allgemeinen Parameter sind WhatIf, Confirm, Verbose, Debug, Warn, ErrorAction, ErrorVariable, OutVariable und OutBuffer.
Empfohlene Parameter
Die Kern-Cmdlets von Windows PowerShell verwenden für identische Parameter Standardnamen. Die Verwendung von Parameternamen wird zwar nicht erzwungen, aus Standardisierungsgründen gibt es jedoch eine explizite Richtlinie für deren Verwendung.
In dieser Richtlinie wird beispielsweise empfohlen, Parameter, die auf einen Computer über dessen Namen verweisen, mit ComputerName und nicht mit "Server", "Host", "System", "Node" oder ähnlich zu benennen. Zu den wichtigen empfohlenen Parameternamen zählen Force, Exclude, Include, PassThru, Path und CaseSensitive.