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
istGet
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 NomenProcess
. Verwenden Sie den Parameter Nomen, um nach dem Nomen zu filtern. Im folgenden Beispiel werden alle Cmdlets zurückgegeben, die Nomen mit dem AnfangsbuchstabenU
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 denenProcessName
mitp
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 anWhere-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ürWhere-Object
verwendet den-like
-Operator, um Prozesse abzugleichen, die mit dem Buchstabenp
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.