- 1 Section
- 10 Lessons
- unbegrenzt
- PowerShell – Grundlagen bis Automation10
- 1.1Was ist PowerShell? Versionen und ISE vs. VS Code
- 1.2Cmdlets: Verben, Substantive, Get-Help
- 1.3Variablen, Datentypen und Pipeline
- 1.4Kontrollstrukturen: if, switch, for, foreach, while
- 1.5Funktionen und Module
- 1.6Dateisystem und Prozesse verwalten
- 1.7Active Directory mit PowerShell verwalten
- 1.8Netzwerkbefehle: Test-NetConnection, Resolve-DnsName
- 1.9Skripte planen: Task Scheduler
- 1.10Praxisprojekt: AD-Onboarding-Skript
Praxisprojekt: AD-Onboarding-Skript
Zeit das Gelernte zusammenzubringen. In diesem letzten Kapitel bauen wir ein realistisches Skript das ein FISI tatsächlich täglich benutzen kann: ein AD-Onboarding-Skript. Aus einer CSV mit neuen Mitarbeitern werden komplett konfigurierte AD-Konten – mit Passwort, Gruppenmitgliedschaften, Mail-Aliasen, Welcome-Sheet, Logging.
Wir bauen es in fünf Iterationen auf – Anfang minimal, dann Schritt für Schritt produktionsreif. Das ist auch die professionelle Arbeitsweise: niemand schreibt 200 Zeilen am Stück. Stattdessen: kleinster lauffähiger Prototyp, dann härten, erweitern, polieren. Am Ende hast du ein Skript das sich messen lassen kann mit dem was in echten Unternehmen läuft.
1) Die Aufgabe: HR-Onboarding
Stell dir vor: HR schickt dir eine Excel-Liste mit 30 neuen Auszubildenden. Jeder braucht ein AD-Konto, soll in die richtigen Gruppen, eine E-Mail-Adresse haben und ein Welcome-Sheet ausgehändigt bekommen. Manuell über die ADUC-Konsole: pro User 5 Minuten = 2,5 Stunden Klicken. Mit PowerShell: ein Skript-Lauf von 30 Sekunden.
Die fachlichen Anforderungen:
2) Iterativer Aufbau – fünf Stufen
So bauen wir das Skript schrittweise auf. Jede Iteration ist lauffähig:
3) Die CSV-Datei
Bevor wir Code schreiben, klären wir den Input. HR liefert so eine CSV:
PowerShell parsed CSV mit Import-Csv in ein Array von Objekten – jede Zeile wird ein Objekt mit den Spalten als Properties (siehe L6).
4) Iteration v1: der Prototyp
Wir fangen ganz simpel an. Hauptsache lauffähig:
Was ist dabei: CSV einlesen, foreach, New-ADUser aus L7. Lauffähig, aber: keine Fehlerbehandlung. Wenn ein User schon existiert → Abbruch. Wenn die OU nicht existiert → Abbruch. Wenn alle gleiches Passwort haben → Security-Problem. Das fixen wir.
5) Iteration v2: strikter Modus + Idempotenz
Drei wichtige Änderungen: $ErrorActionPreference = "Stop" macht Fehler zu Exceptions die wir fangen können (siehe L4). try/catch um New-ADUser – ein Fehler bei einem User bricht nicht den ganzen Lauf ab. Pre-Check auf Existenz mit Get-ADUser – wenn der User schon da ist, wird er einfach übersprungen statt einen Fehler zu werfen. Das macht das Skript idempotent: du kannst es problemlos zweimal starten.
6) Iteration v3: Funktionen, Zufalls-Passwort, Logging
Das ist jetzt deutlich professioneller. Funktionen aus L5 trennen die Logik. Write-Log schreibt parallel in Datei und Konsole. New-RandomPassword erzeugt ein echt zufälliges, sicheres Passwort mit dem .NET-Get-Random-Cmdlet – nicht überall „Start123!". Splatting macht den New-ADUser-Aufruf lesbar.
7) Iteration v4: Gruppen + Welcome-Sheet
Jetzt die richtige Onboarding-Logik. Die zusätzlichen Funktionen:
Jetzt wird's richtig. Die Gruppen-Mapping-Hashtable ist elegant: pro Abteilung eine Liste von Gruppen. Neue Abteilung? Einfach Eintrag dazu. Die E-Mail-Konflikt-Behandlung mit while-Schleife: wenn anna.schmidt@firma.de schon vergeben, wird anna.schmidt2@firma.de probiert. Das Welcome-Sheet mit Here-String ist eine einfache Textdatei – in echt würdest du das PDF generieren oder per Mail verschicken.
8) Die Onboarding-Pipeline visualisiert
So fließen die Daten pro User durch das Skript. Klick die Stufen:
9) Iteration v5: Production-Ready
Die finale Version. Mit param-Block, Help-Kommentaren, ShouldProcess, Summary-Report. Das ist Code wie er in einem Unternehmen committed werden kann:
Das ist Produktion. param-Block mit Validierung (siehe L5): die CSV-Datei muss existieren (ValidateScript Test-Path), alle anderen Parameter haben sinnvolle Defaults. SupportsShouldProcess: das Skript kann mit -WhatIf trocken laufen. Summary-Report am Ende mit Zählung und CSV-Export aller Ergebnisse. Try/catch um JEDEN User – ein Fehler bringt das Skript nicht zu Fall.
10) So sieht der Lauf aus
Vier User angelegt, einer bereits existierend (übersprungen, weil idempotent!), keine Fehler. 5 Sekunden Laufzeit. Was manuell ein halber Tag wäre – fertig.
11) Integration mit Task Scheduler
Das Skript wird interessant wenn HR-Export automatisch eingeliefert wird. Pattern: Skript läuft alle 4 Stunden, prüft ob neue CSV da ist:
Jetzt läuft das Skript jeden Morgen um 7 Uhr. HR exportiert vor 7 Uhr, IT findet die neuen User um 7:05 Uhr bereit. Mehr zu Task Scheduler in L9.
12) Erweiterungs-Ideen
Was könntest du noch einbauen?
- Exchange-Postfach automatisch anlegen via Exchange-Cmdlets (in O365:
Enable-Mailbox) - Microsoft-365-Lizenzen zuweisen via Az/Microsoft Graph
- Welcome-Mail an den Manager schicken mit Zugangsdaten als PDF-Anhang
- Slack/Teams-Account erstellen via API (siehe L8 Invoke-RestMethod)
- Helpdesk-Ticket aufmachen für Hardware-Bestellung
- Photo aus HR-System ziehen und im AD als
thumbnailPhotosetzen - Off-Boarding-Skript als Gegenstück: bei Austritt automatisch alles deaktivieren, Postfach archivieren
- Workflow-Engine: Vorgesetzter muss in einer Web-App approven bevor User wirklich angelegt wird
Manche Firmen haben für das Onboarding/Offboarding spezialisierte Lösungen wie SailPoint IIQ, Microsoft Identity Manager oder Okta Workflows. Für mittlere Setups reicht aber genau so ein PowerShell-Skript – und du verstehst was passiert.
13) Was du im Kurs gelernt hast
Dieses Praxisprojekt vereint alle Konzepte des Kurses. Schau zurück was du benutzt hast:
14) Wie geht's weiter?
Nach diesem Kurs bist du im Windows-Admin-Geschäft direkt produktiv. Die natürlichen nächsten Schritte:
- K27 Windows Server – PowerShell anwenden auf realer Server-Infrastruktur
- K28 Active Directory – das Konzeptwissen hinter den AD-Cmdlets
- Microsoft Graph – die moderne API für Microsoft 365, mit dem PowerShell-Modul
Microsoft.Graph - Azure PowerShell (Az) – Cloud-Verwaltung in Azure
- Pester – Unit-Tests für deine PowerShell-Funktionen (siehe K54 CI/CD)
- Desired State Configuration (DSC) – deklarative Konfiguration ganzer Server-Farmen
- K11 Secure Coding – Passwörter sicher handhaben, Secrets in PowerShell
Übe PowerShell am eigenen System: jede manuelle Klick-Aufgabe ist Übungsmaterial. Heute Klick im AD? Übermorgen ein Skript. Nach ein paar Wochen merkst du: viele Stunden gewonnen, viele Tipp-Fehler vermieden, alles dokumentiert in den Skripten. Das ist die Magie von PowerShell – und sie wartet darauf von dir entdeckt zu werden.
Zusammenfassung
In diesem Praxisprojekt haben wir ein produktionstaugliches Onboarding-Skript in 5 Iterationen aufgebaut: v1 minimal, v2 mit Idempotenz und try/catch, v3 mit Funktionen + Logging + Zufalls-Passwort, v4 mit Gruppen-Mapping + Mail-Konflikt + Welcome-Sheet, v5 production-ready mit param-Validation, ShouldProcess, Summary-Report und Task-Scheduler-Integration. Iterative Entwicklung ist Standard – nicht alles auf einmal! Wichtige Prinzipien: $ErrorActionPreference = "Stop", Pre-Check für Idempotenz, Splatting für lesbare Aufrufe, eigenes Write-Log, parametrisierte Konfiguration, Summary-Report. Alles aus diesem Kurs floss zusammen: Cmdlets (L2), Pipeline (L3), Kontrollstrukturen (L4), Funktionen (L5), Dateisystem (L6), Active Directory (L7), Netzwerk (L8), Task Scheduler (L9). PowerShell ist dein Werkzeug für tägliche Windows-Automation – produktiv mit kleinen Schritten am eigenen System trainieren!
