Kurz: PowerShell ist Microsofts Automatisierungs-Shell und Skriptsprache. Der große Unterschied zu Bash: Befehle (Cmdlets) tauschen über die Pipeline Objekte aus, nicht nur Text.
Teil des Kurses PowerShell
Kapitel 1 von 8 im Kurs PowerShell. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.
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
hallo.ps1
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-15Merke
- 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
Übungsaufgabe
Gib deinen Namen und das Ergebnis von 6 * 7 aus und prüfe mit Get-Member, welche Methoden ein String hat.
Quiz zur Selbstkontrolle
Was ist der Unterschied zu Bash?
- Die Pipeline übergibt Objekte statt Text (richtig)
- PowerShell hat keine Variablen
- PowerShell läuft nur auf Windows
- PowerShell kennt keine Funktionen
Wie sind Cmdlet-Namen aufgebaut?
- Verb-Nomen, z. B. Get-Process (richtig)
- Nomen_Verb
- nur Kleinbuchstaben
- Nur Substantive
Mit welchem Cmdlet sieht man Eigenschaften eines Objekts?
- Get-Member (richtig)
- Get-Help
- Get-Command
- Show-Object
Weiter im Kurs
Weiter: Variablen, Datentypen und Operatoren
Alle Kapitel: PowerShell im Überblick