Erweiterte Funktionen
- CmdletBinding, Parameterattribute, Parametersätze und Eingabevalidierung
- Pipelineeingabe mit begin, process und end verarbeiten, mehrere Objekte entgegennehmen
- Strukturierte Ausgabe mit eigenen Objekten und Ausgabetypen
- -WhatIf und -Confirm unterstützen (SupportsShouldProcess), kommentarbasierte Hilfe
Module entwickeln und verteilen
- Skriptmodule mit Modulmanifest aufbauen, öffentliche und interne Funktionen trennen
- Code mit PSScriptAnalyzer prüfen und mit Pester testen
- Module mit Microsoft.PowerShell.PSResourceGet in der PowerShell Gallery oder einem internen Repository veröffentlichen
- Versionierung und Quellcodeverwaltung mit Git
Robuste Skripts
- Terminierende und nicht terminierende Fehler, try, catch und finally, Fehlerdatensätze mit Get-Error auswerten
- Debuggen in Visual Studio Code: Haltepunkte, Variablen überwachen, Aufrufliste
- Protokollierung und Transkripte
- Geheimnisse nicht im Code speichern: SecretManagement mit lokalem Tresor oder Azure Key Vault
Mit Daten und Schnittstellen arbeiten
- JSON, CSV und XML lesen, verändern und schreiben
- REST-APIs mit Invoke-RestMethod ansprechen: Authentifizierung, Paging, Fehlerbehandlung
- .NET-Klassen direkt nutzen, eigene PowerShell-Klassen und Enumerationen definieren
Skalieren und automatisieren
- Parallele Verarbeitung mit ForEach-Object -Parallel und Thread-Aufträgen, Grenzen und gemeinsam genutzte Variablen
- Remoting für viele Systeme über WinRM und SSH, delegierte Verwaltung mit Just Enough Administration (JEA)
- Controllerskripts: eigene Tools kombinieren, Berichte erzeugen und zeitgesteuert ausführen