Grundlagen
Windows PowerShell ist sowohl eine Befehlszeilenshell als auch eine Skriptsprache mit mehr als 130 Befehlszeilenprogrammen, sogenannten Cmdlets (Command-Lets), die extrem konsistenten Syntax- und Namenskonventionen folgen und mit benutzerdefinierten Cmdlets erweitert werden können.
Ab Windows 7 und Windows Server 2008 ist die PowerShell standardmäßig vorhanden. Im Moment ist die Version 5.1 aktuell. Welche Version bei euch installiert ist könnt Ihr mit dem Cmdlet $psversiontable herausfinden.

PowerShell-Syntax, – Cmdlets und Objekte
Anweisungen werden mithilfe von Cmdlets ausgegeben. Bei einem Cmdlet handelt es sich um ein Einzelfeature zum Bearbeiten eines Objekts. Sie verwenden eine Verb-Nomen-Syntax, d. h. ein Verb und ein Nomen getrennt durch einen Bindestrich. Parameter werden mit einem vorgestellten „-“ gekennzeichnet.
PowerShell ist ein objektorientierte Shell, das heißt, dass das Ein- und Ausgeben von Befehlen in der Regel Objekte sind. Die Verbindung von Befehlen wir durch den sogenannten „Pipe“ Befehl dargestellt: „|
“. Detaillierte Informationen zur Pipeline und dessen Anwendung könnt ihr hier nachlesen.
Zum Artikel: Powershell Pipeline richtig verwenden
Beispiele
NAME Get-Process SYNTAX Get-Process [[-Name] <string[]>] [-ComputerName <string[]>] [-Module] [-FileVersionInfo] [<CommonParameters>] Get-Process [[-Name] <string[]>] -IncludeUserName [<CommonParameters>] Get-Process -Id <int[]> -IncludeUserName [<CommonParameters>] Get-Process -Id <int[]> [-ComputerName <string[]>] [-Module] [-FileVersionInfo] [<CommonParameters>] Get-Process -InputObject <Process[]> -IncludeUserName [<CommonParameters>] Get-Process -InputObject <Process[]> [-ComputerName <string[]>] [-Module] [-FileVersionInfo] [<CommonParameters>] PARAMETER -ComputerName <string[]> -FileVersionInfo -Id <int[]> -IncludeUserName -InputObject <Process[]> -Module -Name <string[]> <CommonParameters> Dieses Cmdlet unterstützt folgende allgemeine Parameter: "Verbose", "Debug", "ErrorAction", "ErrorVariable", "WarningAction", "WarningVariable", "OutBuffer", "PipelineVariable" und "OutVariable". Weitere Informationen finden Sie unter "about_CommonParameters" (https://go.microsoft.com/fwlink/?LinkID=113216). ALIASE gps ps HINWEISE Die Hilfedateien für dieses Cmdlet können von "Get-Help" auf diesem Computer nicht gefunden werden. Es wird nur ein Teil der Hilfe angezeigt. -- Sie können die Hilfedateien für das Modul, das dieses Cmdlet enthält, herunterladen und installieren, indem Sie "Update-Help" verwenden. -- Wenn Sie das Hilfethema für dieses Cmdlet online anzeigen möchten, geben Sie Folgendes ein: "Get-Help Get-Process -Online", oder gehen Sie zu "https://go.microsoft.com/fwlink/?LinkID=113324".
Was ist ein Objekt
Bei einem Objekt handelt es sich um ein Programmkonstrukt. Vom technischen Standpunkt aus handelt es sich bei einem .NET-Objekt um eine Instanz einer .NET-Klasse, die sich aus Daten und den mit diesen Daten verknüpften Operationen zusammensetzt.
Das Cmdlet Get-Service gibt ein oder mehrere Objekte zurück, die Dienste repräsentieren. Objekte können über Eigenschaften verfügen, die in der Ressource vorhandene Daten oder Attribute darstellen. Ein Objekt, das insbesondere einen Dienst repräsentiert, verfügt über Eigenschaften für den Dienstnamen und den Startstatus.
Wenn man eine Eigenschaft abruft, ruft man die Daten aus der Ressource ab. Wenn man eine Eigenschaft festlegt, wird diese in die Ressource geschrieben.
Objekte verfügen auch über Methoden. Das sind Aktionen, die das Objekt durchführen kann. Das Dienstobjekt verfügt z.B. über die Methoden start und stop.
Variablen in der Powershell
Variablen beginnen in PowerShell immer mit einem Dollarzeichen ($
).
PS C:\Windows\system32\ $p = Get-Process PS C:\Windows\system32\ $p Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 66 6 832 1016 19 0,06 1144 AsLdrSrv 188 16 2940 3080 102 3,17 896 AsusTPCenter 48 6 756 528 45 0,55 4180 AsusTPHelper ...
Praxisbeispiele:
Erstellung ein PowerShell Hilfe Datei: PowerShell-hilfe.txt
1. Möglichkeit:
Get-help * | get-help -detailed | out-file f:\PowerShell-hilfe.txt
Hier wurde das Ergebnis mit der Pipe weitergeleitet an das Cmdlet: out-file. Anschließend muss noch der Pfad mit angegeben werden, wo man die Datei speichern möchte. Man sollte natürlich bedenken, dass man am Speicherort auch die entsprechenden Recht hat um hier ein Dokument anlegen zu können.
2. Möglichkeit:
Get-help * | get-help -detailed > f:\PowerShell-hilfe.txt
Hier wurde mit dem folgenden Zeichen „>
„ der Weiterleitungsoperator verwendet. Das Ergebnis wird also in die Datei geschrieben. Beachte: Wenn man den Operator doppelt verwendet: „>>
„ Wird der Inhalt in die bereits vorhandene Datei angefügt. Bei einmaligem Verwenden wird der Inhalt – falls einer vorhanden ist – überschrieben. Anwendung findet der doppelte Operator vorwiegend bei Log Dateien.
Schleifenkonstrukte / Kontrollstrukturen / Vergleichsoperatoren
Für die Verwendung von Schleifenkonstrukte bzw. Vergleichsoperatoren soll die folgende Tabelle eine kleine Hilfestellung geben. Kontrollstrukturen werden vom Prinzip genauso so verwendet wie auch in zahlreichen anderen Skriptsprachen.
Vergleichsoperator | Beschreibung |
---|---|
-eq | Gleich |
-ne | Ungleich |
-gt, -ge | Größer als / Größer oder gleich |
-lt , -le | Kleiner als / Kleiner oder gleich |
-match | Entspricht |
-nomatch | Entspricht nicht |
Das folgende Beispiel soll die Verwendung der Vergleichsoperatoren etwas verdeutlichen. Grundsätzlich wird hier folgende Ausgabe erzeugt. Es werden alle Dienste ausgegeben. Diese werden nach Ihrem Status (start/stop) sortiert und noch zusätzlich in unterschiedlichen Farben dargestellt.
Get-service | foreach-object { if ($_.status -eq „stopped“) {write-host -foregroundcolor green $_.name $_.status} else {write-host -foregroundcolor red $_.name $_.status }}
Die Ausgabe sollte in etwas wie folgt aussehen.

Es werden alle Dienste aufgelistet und anschließend mit der foreach-Object Schleife durchlaufen. Innerhalb der Schleife wird mit einer if Bedingung der Status des Dienstes überprüft. In der Schleife werden die Object mit dem $_. Zeichen angesprochen. Es wird geprüft, ob der Status gleich „stopped“ ist. Falls ja, dann gib in der Konsole den Namen ($_.name ) und den Status ($_.status) des Dienstes in grüner Farbe aus. Andernfalls gib ebenfalls den Namen und den Status aus, aber in der Farbe Rot.
Das könnte dich auch interessieren:
- So kann man viele Wiederholungen in der PowerShell mit einer for Schleife lösen
- Was ist eine IF-Anweisung in der Windows PowerShell und wie wendet man diese an!
- Mit der Windows PowerShell die Differenz zwischen zwei Datumsangaben berechnen
- Wie erstellt man mit der Windows Powershell eine While – Schleife? – Endlosschleife
- Powershell Remotezugriff konfigurieren
- Wie kann man mit der PowerShell Benutzerabfrage erstellen
Dieser Artikel beinhaltet Partner-Links. Durch einen Klick darauf gelangt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhält IT-Learner eine kleine Provision. Der Preis ändert sich für euch nicht. Danke für eure Unterstützung! Letzte Aktualisierung am 9.11.2023
Steigere dein Wissen
Kostenlose Befehlsreferenzen und E-Books herunterladen