PowerShell entdecken

PowerShell ist sowohl eine Befehlszeilenshell als auch eine Skriptsprache. PowerShell wurde ursprünglich unter Windows verwendet, um administrative Aufgaben zu automatisieren. Jetzt kann es plattformübergreifend ausgeführt und für verschiedene Aufgaben verwendet werden.

PowerShell zeichnet sich dadurch aus, dass es anstelle von Text .NET-Objekte akzeptiert und zurückgibt. Dieses Feature erleichtert das Verknüpfen unterschiedlicher Befehle in einer Pipeline.

Wofür können Sie PowerShell verwenden?

PowerShell wird inzwischen für einen größeren Bereich als nur für Windows verwendet. Es wird noch immer für die Aufgabenautomatisierung unter Windows genutzt, aber heute können Sie es für eine Vielzahl von Aufgaben einsetzen, z. B.:

  • Cloudverwaltung. PowerShell lässt sich zum Verwalten von Cloudressourcen verwenden. Beispielsweise können Sie Informationen zu Cloudressourcen abrufen und Cloudressourcen aktualisieren oder neue Ressourcen bereitstellen.
  • CI/CD. PowerShell kann auch als Teil einer Continuous Integration/Continuous Deployment-Pipeline verwendet werden.
  • Automatisieren von Aufgaben für Active Directory und Exchange. Sie können mit PowerShell fast jede Aufgabe unter Windows automatisieren, z. B. das Erstellen von Benutzern in Active Directory und von Postfächern in Exchange.

Es gibt noch viele weitere Verwendungen. Die obige Liste gibt Ihnen jedoch einen Vorgeschmack, wie sehr sich PowerShell weiterentwickelt hat.

Von wem wird PowerShell verwendet?

PowerShell ist ein leistungsstarkes Tool, das Personen unterstützen kann, die mehrere Rollen erfüllen. Früher wurde PowerShell von der Systemadministratorrolle verwendet, inzwischen wird es jedoch von Personen in den Bereichen DevOps, CloudOps und von Entwicklern genutzt.

PowerShell-Cmdlets

PowerShell bietet Hunderte vorinstallierter Befehle. PowerShell-Befehle werden als „Cmdlets“ (ausgesprochen: Command-Lets) bezeichnet.

Der Name jedes Cmdlets besteht aus einer Kombination von Verb und Substantiv. Beispiel: Get-Process. Diese Namenskonvention erleichtert das Verständnis der Funktion des Cmdlets. Außerdem erleichtert sie die Suche nach dem Befehl, den Sie benötigen. Wenn Sie ein Cmdlet suchen, können Sie nach dem Verb oder dem Nomen filtern.

Verwenden von Cmdlets zum Erkunden von PowerShell

Wenn Sie PowerShell zum ersten Mal verwenden, fühlen Sie sich vielleicht eingeschüchtert, weil Sie glauben, dass Ihnen noch viele Kenntnisse fehlen. Die PowerShell ist so aufgebaut, dass Sie sie ganz nach Bedarf in kleinen Schritten erlernen können.

PowerShell enthält Cmdlets, die Ihnen helfen, PowerShell zu erkunden. Mit den folgenden vier Cmdlets können Sie ermitteln, welche Befehle verfügbar sind, was sie ausführen und für welche Typen sie verwendet werden.

  • Get-Verb. Dieser Befehl gibt eine Liste mit Verben zurück, die von den meisten Befehlen verwendet werden. Die Antwort beschreibt, was diese Verben bewirken. Da die meisten Befehle dieser Namenskonvention folgen, gibt ihr Name Aufschluss über ihre Funktionsweise. Das macht es Ihnen leichter, den entsprechenden Befehl auszuwählen oder einen selbst erstellten Befehl zu benennen.
  • Get-Command. Dieser Befehl ruft eine Liste aller Befehle ab, die auf Ihrem Computer installiert sind.
  • Get-Member. Mit diesem Befehl lässt sich für die objektbasierte Ausgabe ermitteln, welches Objekt, welche Eigenschaften und welche Methoden für einen Befehl verfügbar sind.
  • Get-Help. Wenn Sie diesen Befehl mit dem Namen eines Befehls als Argument aufrufen, wird eine Hilfeseite angezeigt, auf der die verschiedenen Teile eines Befehls beschrieben werden.

Mit diesen Befehlen können Sie nahezu alles ermitteln, was Sie über PowerShell wissen müssen.

Verb

Das Verb ist ein wichtiges Konzept in PowerShell. Es ist ein Benennungsstandard, dem die meisten Cmdlets entsprechen. Sie müssen diesen Benennungsstandard auch befolgen, wenn Sie eigene Befehle schreiben. Das Verb bezeichnet, was ausgeführt werden soll, z. B. das Lesen oder Ändern von Daten. PowerShell verfügt über eine standardisierte Liste von Verben. Um eine vollständige Liste aller möglichen Verben abzurufen, verwenden Sie das Cmdlet Get-Verb:

Get-Verb

Das Cmdlet gibt eine lange Liste von Verben zurück. Die Beschreibung stellt Kontext für den Zweck des Verbs bereit. Dies sind die ersten Zeilen der Ausgabe:

Verb    AliasPrefix   Group     Description
----    -----------   -----     -----------
Add     a             Common    Adds a resource to a container, or attaches an item to another item
Clear   cl            Common    Removes all the resources from a container but does not delete the container
Close   cs            Common    Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy    cp            Common    Copies a resource to another name or to another container
Enter   et            Common    Specifies an action that allows the user to move into a resource
Exit    ex            Common    Sets the current environment or context to the most recently used context
...

Suchen von Befehlen mit „Get-Command“

Mit dem Cmdlet Get-Command wird eine Liste aller verfügbaren Befehle zurückgegeben, die auf Ihrem System installiert sind. Die zurückgegebene Liste ist recht umfangreich. Sie können die Menge der zurückgegebenen Informationen einschränken, indem Sie die Antwort mithilfe von Parametern oder Hilfs-Cmdlets filtern.

Filtern nach Namen

Sie können die Ausgabe von Get-Command mithilfe verschiedener Parameter filtern. Anhand der Filterung können Sie Befehle mit bestimmten Eigenschaften suchen. Mit dem Parameter Name können Sie einen bestimmten Befehl anhand des Namens suchen.

Get-Command -Name Get-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management

Wie gehen Sie vor, um alle Befehle zu finden, die mit Prozessen funktionieren? Sie können ein Platzhalterzeichen * verwenden, um andere Formen der Zeichenfolge abzugleichen. Beispiel:

Get-Command -Name *-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Debug-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Start-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Stop-Process      7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Wait-Process      7.0.0.0    Microsoft.PowerShell.Management

Filtern nach Nomen und Verb

Es gibt weitere Parameter, die nach Verb- und Nomenwerten filtern. Das Verb im Namen eines Befehls ist der linke Teil des Befehls. Das Verb sollte einem der vom Get-Verb Cmdlet zurückgegebenen Werte entsprechen. Das Nomen ist der rechte Teil eines Befehls. Ein Nomen kann alles sein.

  • Filtern nach Verb. Im Befehl Get-Process ist Get das Verb. Verwenden Sie den Parameter Verb, um nach dem Verbteil zu filtern.

    Get-Command -Verb 'Get'
    

    In diesem Beispiel werden alle Befehle aufgelistet, die das Verb Get verwenden.

  • Filtern nach Nomen. Im Befehl Get-Process lautet das Nomen Process. Verwenden Sie den Parameter Nomen, um nach dem Nomen zu filtern. Im folgenden Beispiel werden alle Cmdlets zurückgegeben, die Nomen mit dem Anfangsbuchstaben U enthalten.

    Get-Command -Noun U*
    

Außerdem können Sie Parameter kombinieren, um Ihre Suche einzugrenzen, z. B.:

Get-Command -Verb Get -Noun U*
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Get-UICulture                7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Unique                   7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Uptime                   7.0.0.0    Microsoft.PowerShell.Utility

Verwenden von Hilfs-Cmdlets zum Filtern von Ergebnissen

Sie können auch andere Cmdlets verwenden, um Ergebnisse zu filtern.

  • Select-Object. Dieser vielseitige Befehl ermöglicht Ihnen die Auswahl bestimmter Eigenschaften eines oder mehrerer Objekte. Sie können auch die Anzahl der Elemente einschränken, die Sie zurückerhalten. Im folgenden Beispiel werden die Eigenschaftswerte Name und Source für die ersten fünf Befehle zurückgegeben, die in der aktuellen Sitzung verfügbar sind.

    Get-Command | Select-Object -First 5 -Property Name, Source
    
    Name                      Source
    ----                      ------
    Add-AppPackage            Appx
    Add-AppPackageVolume      Appx
    Add-AppProvisionedPackage Dism
    Add-AssertionOperator     Pester
    Add-ProvisionedAppPackage Dism
    

    Weitere Informationen finden Sie unter Select-Object.

  • Where-Object. Mit diesem Cmdlet können Sie die zurückgegebenen Objekte basierend auf den Werten der Eigenschaften filtern. Der Befehl verwendet einen Ausdruck, der den Wert einer Eigenschaft testen kann. Im folgenden Beispiel werden alle Prozesse zurückgegeben, bei denen ProcessName mit p beginnt.

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    Das Cmdlet Get-Process gibt eine Auflistung von Prozessobjekten zurück. Um die Antwort zu filtern, reichen Sie die Ausgabe an Where-Object weiter. „Weiterreichen“ bedeutet, dass mehrere Befehle mithilfe eines senkrechten Strichs (|) verbunden werden. Die Ausgabe eines Befehls wird als Eingabe für den nächsten Befehl gesendet. Der Filterausdruck für Where-Object verwendet den -like-Operator, um Prozesse abzugleichen, die mit dem Buchstaben p beginnen.

Untersuchen von Objekten mit „Get-Member“

Nachdem Sie das gewünschte Cmdlet gefunden haben, möchten Sie mehr über die von ihm erzeuge Über das Cmdlet Get-Member werden der Typ, die Eigenschaften und die Methoden eines Objekts angezeigt. Reichen Sie die Ausgabe, die Sie überprüfen möchten, an Get-Member weiter.

Get-Process | Get-Member

Im Ergebnis werden der Rückgabetyp (TypeName) sowie alle Eigenschaften und Methoden des Objekts angezeigt. Dies ist ein Auszug aus einem solchen Ergebnis:

TypeName: System.Diagnostics.Process

Name        MemberType     Definition
----        ----------     ----------
Handles     AliasProperty  Handles = Handlecount
Name        AliasProperty  Name = ProcessName
...

Mithilfe des Parameters MemberType können Sie die zurückgegebenen Informationen einschränken.

Get-Process | Get-Member -MemberType Method

Standardmäßig zeigt PowerShell nur wenige Eigenschaften an. Im vorherigen Beispiel wurden die Member Name, MemberType und Definition angezeigt. Mithilfe von Select-Object können Sie Eigenschaften angeben, die angezeigt werden sollen. Wenn Sie beispielsweise nur die Eigenschaften Name und Definition anzeigen wollen:

Get-Process | Get-Member | Select-Object Name, Definition

Nach Parametertyp suchen

Get-Member hat uns gezeigt, dass Get-Process Objekte vom Typ Process zurückgibt. Mithilfe des Parameters ParameterType von Get-Command können Sie andere Befehle finden, die Process-Objekte als Eingabe verwenden.

Get-Command -ParameterType Process
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Debug-Process                7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Enter-PSHostProcess          7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Get-Process                  7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Get-PSHostProcessInfo        7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Stop-Process                 7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Wait-Process                 7.0.0.0    Microsoft.PowerShell.Managem…

Wenn Sie den Ausgabetyp eines Befehls kennen, können Sie die Suche nach verwandten Befehlen einschränken.

Zusätzliche Ressourcen