Was ist PowerShell?
PowerShell ist Microsofts Automatisierungs-Shell und Skriptsprache. Der große Unterschied zu Bash: Befehle (Cmdlets) tauschen über die Pipeline Objekte aus, nicht nur Text. Ein Prozess ist ein Objekt mit Eigenschaften (Name, CPU, Id), die du direkt abfragst, ohne Text zu zerlegen.
- Windows PowerShell 5.1 ist in Windows enthalten (
powershell.exe) - PowerShell 7+ (
pwsh) ist plattformübergreifend (Windows, macOS, Linux), Open Source und die aktuelle Version
Typisch: Windows- und Server-Administration, Active Directory, Azure und Microsoft 365, Automatisierung, CI/CD.
Starten
pwsh # interaktive Shell (Linux/macOS/Windows)
pwsh -File skript.ps1 # Skript ausführen
pwsh -Command "Get-Date" # einzelner BefehlAuf Windows brauchst du für Skripte evtl. Set-ExecutionPolicy RemoteSigned -Scope CurrentUser.
Das erste Skript
Write-Output "Hallo PowerShell!"
$name = "Mia"
Write-Output "Hallo, $name!"
"Ausdruck wird direkt ausgegeben: $(2 + 3)"
Write-Host "Write-Host schreibt direkt auf die Konsole"
2 + 3
$PSVersionTable.PSVersion.Major -ge 5Ausgabe
Hallo PowerShell! Hallo, Mia! Ausdruck wird direkt ausgegeben: 5 Write-Host schreibt direkt auf die Konsole 5 True
- Befehle heißen Cmdlets im Format Verb-Nomen:
Get-Process,Set-Location,Write-Output - Variablen beginnen mit
$ - Jeder Ausdruck, dessen Ergebnis nicht zugewiesen wird, landet in der Ausgabe (
2 + 3gibt5aus) - Kommentare:
# bis Zeilenende,<# mehrzeilig #> - Groß-/Kleinschreibung ist egal; Vergleiche ignorieren sie standardmäßig
Hilfe und Entdecken
Drei Cmdlets erklären sich fast alles:
Get-Command -Verb Get -Noun Process # welche Befehle gibt es?
Get-Help Get-Process -Examples # Hilfe mit Beispielen
Get-Process | Get-Member # welche Eigenschaften und Methoden hat das Objekt?(Get-Command Get-ChildItem).CommandType
Get-Alias gci | ForEach-Object { "$($_.Name) -> $($_.Definition)" }
(Get-Verb | Where-Object Verb -eq 'Get').Verb
"abc".GetType().Name
(1..3).GetType().Name
Get-Date -Year 2025 -Month 3 -Day 15 -Hour 0 -Minute 0 -Second 0 -Format "yyyy-MM-dd"Ausgabe
Cmdlet gci -> Get-ChildItem Get String Object[] 2025-03-15
So führst du den Code aus: PowerShell 7 (pwsh) läuft auf Windows, macOS und Linux. Skript als skript.ps1 speichern und mit pwsh ./skript.ps1 starten.
Merke
- PowerShell tauscht Objekte statt Text aus
- Cmdlets heißen Verb-Nomen (
Get-Process), Variablen beginnen mit$ Get-Command,Get-Help,Get-Membersind die Entdeckungswerkzeuge- Nicht zugewiesene Ausdrücke werden ausgegeben
- PowerShell 7 (
pwsh) läuft plattformübergreifend
Aufgabe
Gib deinen Namen und das Ergebnis von 6 * 7 aus und prüfe mit Get-Member, welche Methoden ein String hat.