# PowerShell Server Administration: Skalierbare Automatisierung
TL;DR / Management Summary PowerShell ist die Lingua Franca der Windows Server Administration. Jede Aktion im Server Manager (Artikel 483) führt im Hintergrund einen PowerShell-Befehl aus. Senior Admins nutzen PowerShell für Massen-Aktionen (z.B. “Ändere DNS-Server auf allen DCs”), Reporting (z.B. “Zeige alle inaktiven Konten”) und Monitoring. Durch die Objektorientierung können wir Daten nahtlos zwischen verschiedenen Systemen (z.B. SQL zu AD) verschieben.
# 1. Einführung & Das Server-Ökosystem
Vom Befehl zum Modul.
Auf einem Server arbeiten wir primär mit spezialisierten Modulen:
- ActiveDirectory: User, Gruppen, Computer.
- Hyper-V: VMs, Snapshots, Switches.
- DNSAdmin / DhcpServer: Infrastruktur-Dienste.
- FailoverClusters: Cluster-Status und Schwenks.
# 2. AD-Administration via PowerShell
Suchen und Ersetzen im Verzeichnis.
Die Suche via GUI (“Find”) ist limitiert. PowerShell bietet LDAP-Power.
# Komplexe Abfragen (Filter)
# Findet alle User in der Abteilung 'IT', deren Passwort bald abläuft
Get-ADUser -Filter 'Department -eq "IT"' -Properties PasswordExpiryValue |
Where-Object { $_.PasswordExpiryValue -lt (Get-Date).AddDays(7) }
# Massen-Änderungen
# Setzt den Firmennamen für alle Mitarbeiter eines Standorts
Get-ADUser -SearchBase "OU=Munich,DC=firma,DC=local" -Filter "*" |
Set-ADUser -Company "Firma München GmbH"
# 3. Deep Dive: Pipeline-Performance
Effizientes Arbeiten mit Millionen Objekten.
Wenn Sie ein AD mit 50.000 Usern abfragen, ist die Performance entscheidend.
# Filter Left, Format Right
- Falsch:
Get-ADUser -Filter * | Where-Object { $_.City -eq 'Berlin' }(Holt ALLES vom Server und filtert lokal). - Richtig:
Get-ADUser -Filter 'City -eq "Berlin"'(Der Server schickt nur die Treffer).
# Garbage Collection
Bei extrem großen Skripten (z.B. Log-Analyse von GB-Files) sollten Sie Variablen explizit leeren:
$BigData = $null
[System.GC]::Collect()
# 4. Day-2 Operations: Fehlerbehandlung (Try-Catch)
Stabile Skripte für die Produktion.
Ein Admin-Skript darf bei einem Fehler nicht einfach abbrechen.
try {
Stop-Service "KritischerDienst" -ErrorAction Stop
} catch {
Write-Error "Dienst konnte nicht gestoppt werden: $($_.Exception.Message)"
# Hier könnte eine Teams-Notification oder ein Ticket-Trigger stehen
}
# 5. Troubleshooting & “War Stories”
Wenn das Skript Amok läuft.
# Top 3 Fehlerbilder
-
Symptom: “Der Begriff ‘Get-ADUser’ wurde nicht erkannt”.
- Ursache: Das RSAT-Feature ist nicht installiert.
- Lösung:
Install-WindowsFeature RSAT-AD-PowerShell.
-
Symptom: Skript hakt bei Sonderzeichen im Usernamen (z.B. Ü, Ö, Ä).
- Lösung: Skript immer als UTF-8 with BOM speichern (Wichtig für ISE/VS Code Kompatibilität).
-
Symptom:
Get-ADObjectliefert keine Ergebnisse für gelöschte Objekte.- Lösung: Parameter
-IncludeDeletedObjectsnutzen (erfordert aktiven AD-Papierkorb).
- Lösung: Parameter
# “War Story”: Der “Delete-All” Loop
Ein Admin wollte Test-Computer löschen: Get-ADComputer -Filter 'Name -like "Test*"' | Remove-ADObject.
Das Problem: Ein produktiver SQL-Server hieß zufällig TestSQL01. Das Skript fragte nicht nach Bestätigung und löschte ihn mit.
Lehre: Nutzen Sie bei Massen-Löschungen immer den Schalter -Confirm oder prüfen Sie die Liste erst in einer CSV-Datei, bevor Sie die Pipeline an Remove-* schicken.
# 6. Monitoring & Alerting
Automatisierte Berichte.
# HTML Dashboards erstellen
Generieren Sie hübsche Reports ohne externe Tools:
Get-Service | Select-Object Status, Name, DisplayName |
ConvertTo-Html -Head "<style>body{font-family:sans-serif;} .Running{color:green;}</style>" |
Out-File "C:\Temp\Services.html"
# 7. Fazit & Empfehlung
PowerShell ist kein “Add-on”, es ist das Betriebssystem.
- Empfehlung: Bauen Sie sich eine eigene Modul-Bibliothek mit Ihren Standard-Funktionen (
MyCompany.psm1). - Strategie: Nutzen Sie Git (Artikel 181), um Ihre Skripte zu versionieren. Ein verlorenes Admin-Skript ist verlorenes Firmenwissen.
# Anhang: Die 10 wichtigsten Server-Module
ActiveDirectory: IdentitätHyper-V: VirtualisierungDnsServer: DNS ManagementDhcpServer: DHCP ScopesFailoverClusters: HA ManagementNetTCPIP: Netzwerk-StackServerManager: Rollen & FeaturesStorage: Disk & Volume ManagementGroupPolicy: GPO SteuerungWebAdministration: IIS Management