Automatisierung mit PowerShell: Skripte für Windows 10/11 optimieren

PowerShell ist mehr als nur eine erweiterte Eingabeaufforderung - als objektorientierte Skriptsprache ermöglicht sie effiziente Systemadministration. Dieser Leitfaden zeigt praxisnahe Automatisierungslösungen für wiederkehrende Aufgaben.

Grundlegende Skriptstruktur
Ein PowerShell-Skript (.ps1) besteht aus:
  • Cmdlets (Verb-Noun-Kommandos wie Get-Service)
  • Parameter (z.B. -ComputerName)
  • Pipeline-Operator (|) zur Datenweiterleitung
Beispiel für Dienstüberwachung:
Code:
Get-Service -Name WinRM | Where-Object {$_.Status -eq 'Running'} | Stop-Service -Force

Parameterbehandlung
Professionelle Skripte nutzen parametrisierte Eingaben:
Code:
param(
    [Parameter(Mandatory=$true)]
    [string]$ServiceName,
    [ValidateSet('Start','Stop','Restart')]
    [string]$Action = 'Restart'
)
$Service = Get-Service -Name $ServiceName
if ($Action -eq 'Start') { $Service.Start() }
elseif ($Action -eq 'Stop') { $Service.Stop() }
else { $Service.Restart() }
Aufruf: .\ServiceControl.ps1 -ServiceName WinRM -Action Stop

Fehlerbehandlung
Implementieren Sie robuste Ausnahmebehandlung:
Code:
try {
    Get-Item -Path "C:\Unbekannt\Datei.txt" -ErrorAction Stop
}
catch [System.Management.Automation.ItemNotFoundException] {
    Write-Warning "Datei nicht gefunden"
}
catch {
    Write-Error "Kritischer Fehler: $_"
}
finally {
    Write-Output "Vorgang abgeschlossen"
}

Scheduled Tasks automatisieren
Erstellen Sie Zeitplanaufgaben direkt aus PowerShell:
Code:
$Trigger = New-JobTrigger -Daily -At "3:00 AM"
Register-ScheduledJob -Name "Nachtliches Backup" -FilePath "C:\Scripts\Backup.ps1" -Trigger $Trigger
Überprüfen mit: Get-ScheduledJob | Format-List

Sicherheitsbest Practices
1. Execution-Policy anpassen: Set-ExecutionPolicy RemoteSigned
2. Skriptsignierung mit digitalem Zertifikat
3. Eingabevalidierung bei Benutzerinteraktion
4. Logging implementieren: Start-Transcript -Path "C:\Logs\Skript.log"

Für Leistungsoptimierung nutzen Sie:
  • Measure-Command { ... } zur Laufzeitanalyse
  • ForEach-Object -Parallel in PowerShell 7 für Multithreading
  • Workflows (workflow-Keyword) für komplexe Abläufe

Fortgeschrittene Techniken wie Klassendefinitionen (ab PS 5.0) und Desired State Configuration (DSC) ermöglichen enterprise-taugliche Lösungen. Testen Sie Skripte stets in isolierten Umgebungen vor Produktiveinsatz.
 
Zurück
Oben