đź’ˇ 1. Moderne Parallelisierung in PowerShell 7+
Verabschiede dich von langsamen, ressourcenfressenden Prozessen! In PowerShell 7 werden parallele Pipelines direkt in extrem schnellen .NET-Runspaces (Threads) ausgefĂĽhrt.
# Parallele AusfĂĽhrung ĂĽber 8 Threads
$servers = @("srv-app01", "srv-app02", "srv-db01", "srv-web01")
$maxTimeout = 2000
$results = $servers | ForEach-Object -Parallel {
# ⚠️ WICHTIG: Variablen aus dem Eltern-Scope müssen mit $using: angesprochen werden!
$timeout = $using:maxTimeout
$server = $_
[PSCustomObject]@{
Host = $server
Status = "Online"
}
} -ThrottleLimit 8
🛑 Früher (Windows PS 5.1): Start-Job
Erzeugte für jeden Task einen vollständigen powershell.exe-Prozess (~30-50 MB RAM je Job & hohe Startup-Latenz).
⚡ Heute (PS 7+): ForEach-Object -Parallel
FĂĽhrt Tasks in leichtgewichtigen Runspace-Threads innerhalb des Hauptprozesses aus. Bis zu 100x schneller bei minimalem RAM-Bedarf.
🏛️ 2. Architektur: Thread-Drosselung (-ThrottleLimit)
Ohne -ThrottleLimit wĂĽrden bei 1.000 Servern 1.000 Threads auf einmal starten und das System ĂĽberlasten. Mit -ThrottleLimit 5 werden immer genau 5 Worker parallel bedient:
├── [Thread 2]: srv02 ──▶ [Process] ──▶ [Result 2]
├── [Thread 3]: srv03 ──▶ [Process] ──▶ [Result 3]
└── [Thread 4]: srv04 ──▶ [Process] ──▶ [Result 4]
🎯 3. Aufgaben & Checkliste
Öffne die Datei aufgabe.ps1 und löse die 4 Aufgaben: