- 1 Section
- 10 Lessons
- unbegrenzt
- PowerShell – Grundlagen bis Automation10
- 1.1Was ist PowerShell? Versionen und ISE vs. VS Code
- 1.2Cmdlets: Verben, Substantive, Get-Help
- 1.3Variablen, Datentypen und Pipeline
- 1.4Kontrollstrukturen: if, switch, for, foreach, while
- 1.5Funktionen und Module
- 1.6Dateisystem und Prozesse verwalten
- 1.7Active Directory mit PowerShell verwalten
- 1.8Netzwerkbefehle: Test-NetConnection, Resolve-DnsName
- 1.9Skripte planen: Task Scheduler
- 1.10Praxisprojekt: AD-Onboarding-Skript
Cmdlets: Verben, Substantive, Get-Help
In L1 hast du den ersten Cmdlet-Aufruf gesehen: Get-Process. Das hieß so weil PowerShell-Befehle einer strengen Konvention folgen – dem Verb-Substantiv-Schema. Diese eine Regel ist der Grund warum PowerShell-Code so lesbar ist: jedes Cmdlet sagt dir auf Anhieb was es tut.
In dieser Lektion lernst du das System dahinter – und vor allem das wichtigste Werkzeug überhaupt: Get-Help. Mit Hilfe kommst du auch ohne Auswendiglernen weiter, denn es gibt mehrere tausend Cmdlets. Niemand kennt sie alle – aber wer das Schema kennt, kann sie alle finden.
1) Cmdlet-Aufbau: Verb-Substantiv
Ein Cmdlet (gesprochen „Command-Let") besteht immer aus zwei Teilen, durch Bindestrich getrennt: Verb-Substantiv. Das Verb sagt was getan wird, das Substantiv womit. So entstehen Befehle wie ganze deutsche Sätze – probier es:
Stop-Service. „Einen User aus AD löschen" → Remove-ADUser. „Eine Datei kopieren" → Copy-Item. Genau das ist der Lerneffekt vom Schema.2) Die zugelassenen Verben
Microsoft hat eine Liste „erlaubter" Verben definiert, die in Cmdlets vorkommen dürfen. Damit bleibt die Sprache konsistent: niemand soll mal Fetch-Process und mal Retrieve-Process schreiben. Es gibt rund 100 zugelassene Verben in 5 Kategorien. Die wichtigsten:
Add, Clear, Copy, Move,
Rename, Find, Search
ConvertTo, ConvertFrom,
Backup, Restore, Save
Suspend, Resume,
Enable, Disable, Install
Measure, Resolve,
Ping (selten)
Grant, Revoke,
Protect, Unprotect
Get-Verb in der Konsole – gibt sie aus, gruppiert. Wenn du eigene Cmdlets schreibst (z.B. in L5 Funktionen), halt dich an die zugelassenen Verben. PowerShell warnt sogar bei Modul-Import wenn du einen unbekannten Verb verwendest. Faustregel: Erst denken „was ist das Verb?", dann „was ist das Substantiv?".3) Parameter: das Wie
Jedes Cmdlet hat Parameter die seine Funktion verfeinern. Sie haben einen Namen und werden mit Bindestrich davor angegeben:
PowerShell-Parameter sind case-insensitive: -Name, -name, -NAME sind alle gleich. Aber Konvention ist PascalCase (jedes Wort groß). Außerdem reicht ein eindeutiges Präfix: Get-Process -N chrome funktioniert auch (kurz für -Name). Praktisch beim interaktiven Tippen, aber in Skripten sollte man immer ausgeschrieben – sonst bricht's wenn ein neuer Parameter mit gleichem Anfangsbuchstaben dazukommt.
4) Wichtige Standardparameter: Common Parameters
Es gibt Parameter die jedes Cmdlet versteht – die sogenannten Common Parameters:
Remove-Item, Stop-Service oder Remove-ADUser erst mit -WhatIf testen – das zeigt was passieren würde, ohne es zu tun. Goldene Regel: bei Massen-Operationen IMMER erst mit -WhatIf, dann scharf schalten. Das hat schon viele Disaster verhindert. Pendant zu --dry-run bei Tools wie rsync.5) Get-Help – dein wichtigstes Cmdlet
Niemand kennt alle Cmdlets auswendig – und das musst du auch nicht. PowerShell hat ein eingebautes, ausgezeichnetes Hilfesystem. Get-Help liefert Doku zu jedem Cmdlet, mit verschiedenen Detailstufen:
Get-Help Cmdlet -Examples für Beispiele. 2) Wenn die nicht reichen: Get-Help Cmdlet -Full für alle Parameter und Details. 3) Get-Help Cmdlet -Online öffnet die offizielle Microsoft-Doku im Browser – meist aktueller. Auf neuer PowerShell-Installation einmal Update-Help ausführen (als Admin) – lädt die Hilfetexte vom Microsoft-Server. Danach funktioniert das offline.6) Cmdlets finden mit Get-Command
Du weißt nicht wie ein bestimmtes Cmdlet heißt? Get-Command ist der Cmdlet-Finder. Verstehe es als „Suchmaschine für Befehle":
Das Discovery-Pattern: Get-Command -Noun Service findet ALLE Service-bezogenen Cmdlets – Get-Service, Set-Service, Start-Service, Stop-Service, Restart-Service, New-Service. Schon weißt du was du mit Services machen kannst, ohne irgendwas auswendig zu lernen.
7) Aliase: Kurzformen für die Konsole
Viele Cmdlets haben einen Alias – einen kurzen Namen. Praktisch für die interaktive Konsole, weniger gut für Skripte (weniger lesbar). Manche Aliase kommen aus der cmd-Welt (dir, cd), andere aus Bash (ls, cp):
? und % kreuz und quer stehen. Lange Namen sind selbstdokumentierend: Where-Object sagt was passiert, ? nicht. Liste aller Aliase: Get-Alias. Eigenen Alias setzen: Set-Alias -Name myls -Value Get-ChildItem.8) Tab-Completion und IntelliSense
Die PowerShell-Konsole hat eine sehr gute Tab-Vervollständigung. Das macht das interaktive Arbeiten viel angenehmer:
Get-Pro+ Tab → vervollständigt zuGet-ProcessGet-Process -+ Tab → zeigt alle Parameter (-Name, -Id, ...)Get-Service -Name+ Tab → bei manchen Cmdlets auch Werte! Zeigt verfügbare Service-Namen.- Strg+Leertaste → zeigt alle möglichen Vervollständigungen als Menü (statt nur zu cyclen)
- In VS Code mit PowerShell-Extension: IntelliSense – Code-Completion mit Doku-Vorschau direkt beim Tippen
Das ist ein riesiger Produktivitätsgewinn. Du musst nie ganze Cmdlet-Namen tippen, nie die exakte Parameter-Schreibweise nachschlagen. Selbst wenn du den Namen nur ungefähr weißt: Tab führt dich hin.
9) Häufige Fallstricke
Drei Anfänger-Fehler die du vermeiden solltest:
- Parameter-Werte nicht quoten wenn Leerzeichen drin sind:
Get-Item C:\Mein Ordnerbricht zusammen. Mit Anführungszeichen:Get-Item "C:\Mein Ordner". PowerShell ist da strikter als Bash mit doppelten Anführungszeichen. - Verwechslung von Pipeline-Output und Variablen-Zuweisung:
Get-Process > datei.txtschreibt FORMATIERTEN Text in die Datei (wie er im Terminal aussehen würde). Wenn du Objekte speichern willst:Get-Process | Export-Csv datei.csvoder als Variable$ps = Get-Process. Mehr in L3. - Verwechslung von
=und-eq: In PowerShell ist=für Zuweisung,-eqfür Vergleich (wie in Bash=vs.-eqin [...]). Mehr dazu in L4.
10) Vom Anfänger zum Selbst-Helfer
Wenn dich jemand fragt „wie liste ich auf einem Windows-Server die letzten 10 fehlgeschlagenen Logins?" und du es nicht weißt – kein Problem. So gehst du vor:
- Verb-Substantiv erraten: vielleicht
Get-EventLog? OderGet-WinEvent? - Get-Command:
Get-Command *Event*→ zeigt alle Event-bezogenen Cmdlets - Get-Help -Examples:
Get-Help Get-WinEvent -Examples→ typische Aufrufe - Microsoft Learn online:
Get-Help Get-WinEvent -Online→ ausführliche Doku - Experimentieren: erst mit kleiner Anzahl, mit
-MaxEvents 5, dann skalieren
Das ist das eigentliche „PowerShell-Können": nicht alle Cmdlets im Kopf, sondern die Methodik zum Selbst-Helfen. Mehr ist gar nicht nötig. Selbst erfahrene Admins schlagen täglich Sachen nach – das ist normal.
Zusammenfassung
Cmdlets folgen dem Verb-Substantiv-Schema: Get-Process, Stop-Service, New-ADUser. Erlaubte Verben siehe Get-Verb. Parameter mit Bindestrich: -Name, -Path, -Force. Switch-Parameter (ohne Wert): -Recurse, -Force, -Confirm. Common Parameters auf jedem Cmdlet: -WhatIf (Trockenlauf, GOLDEN!), -Verbose, -ErrorAction. Get-Help ist das wichtigste Cmdlet: -Examples für Beispiele, -Full für Details, -Online für Microsoft Learn. Get-Command findet Cmdlets: -Verb, -Noun, mit Wildcards. Aliase wie ls, dir, ?, % sind ok in der Konsole – in Skripten lange Namen nutzen. Tab-Completion und VS-Code-IntelliSense beschleunigen alles massiv. Methodik wichtiger als Auswendiglernen: erraten → Get-Command → Get-Help -Examples → ausprobieren.
