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. Gegenwärtig 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
Was ist ein Objekt
Ein Objekt ist 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. E
in 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








