Eine Sammlung verstreuter PowerShell-Skripte, ersetzt durch eine einzige, auditierte Desktop-Anwendung. Jede Schreiboperation in Active Directory oder Exchange durchläuft ein verpflichtendes Bestätigungsfenster — nichts geschieht im Stillen.
Das Problem mit PowerShell-Skripten
Vor AdminSuite bedeutete das Onboarding eines neuen Mitarbeiters, mehrere PowerShell-Konsolen zu öffnen, Skripte von freigegebenen Netzlaufwerken auszuführen und das generierte Passwort manuell in ein Helpdesk-Ticket einzufügen. Schritte wurden übersprungen. Konten landeten in der falschen OU. Postfächer wurden vergessen.
Hauptrisiko: Schreiboperationen in Active Directory erfolgten ohne jegliche Bestätigungsschranke. Ein Tippfehler im Benutzernamen, die Wahl der falschen OU oder das Ausführen einer falschen Skriptversion hatte sofortige, schwer rückgängig zu machende Folgen.
AdminSuite löst das durch ein verpflichtendes Bestätigungsfenster vor jeder Schreiboperation, ein strukturiertes Audit-Log und eine einzige ausführbare Datei, die jedes Mitglied des IT-Teams starten kann — ohne PowerShell-Kenntnisse.
Sicherheits- und Audit-Modell
Jedes Modul arbeitet nach demselben vierstufigen Schreibmuster. Es gibt keine Abkürzungen — selbst die Änderung eines einzelnen Feldes durchläuft den vollständigen Bestätigungsablauf.
Anmeldedaten werden über P/Invoke auf advapi32.dll im Windows-Anmeldeinformationsmanager gespeichert. Beim ersten Start erscheint das übliche Windows-Anmeldefenster; nachfolgende Starts prüfen die gespeicherten Anmeldedaten still gegen die AD-Administratorengruppe. Verliert das Konto die Mitgliedschaft, werden die Anmeldedaten automatisch gelöscht.
Audit-Dateien landen in %APPDATA%\AdminSuite\Audit\audit_YYYY-MM-DD.log — eine Datei pro Tag, menschenlesbar, ein Eintrag pro Operation.
Vollautomatisierung? Ja — aber nicht bei sensiblen Daten
Dieser gesamte Ablauf — von der Kontoerstellung über das Postfach bis zur Gruppenzuweisung — ließe sich vollständig in n8n abbilden und ohne menschliches Zutun ausführen, z. B. ausgelöst durch einen neuen Datensatz in Personio. Technisch steht dem nichts im Weg, und bei vielen Prozessen mache ich genau das.
Bei Schreibvorgängen in Active Directory und Exchange habe ich bewusst darauf verzichtet. Es sind Operationen mit sensiblen Daten und schwer rückgängig zu machen — ein Tippfehler im Namen, eine falsche OU oder ein Fehler beim Abgleich Personio ↔ AD kann Schäden anrichten, die kein Log rückgängig macht. Deshalb lässt AdminSuite statt Vollautomatisierung den Menschen in der Schleife: Die Live-Vorschau zeigt genau, was passieren wird, und ein einziger Klick auf „Übernehmen“ ist die Grenze zwischen Absicht und Schreibvorgang.
Grundsatz: Automatisierung vereinfacht das Wiederkehrende — aber bei irreversiblen Operationen lohnt sich ein zusätzliches Augenpaar. Das ist eine Designentscheidung, keine Einschränkung des Werkzeugs.
Module
AD-Konto mit Exchange-Remote-Postfach erstellen
Ablauf in drei Tabs: persönliche und organisatorische Daten, Gruppenzuweisung und anschließend eine vollständige Zusammenfassung vor der Ausführung. Der Benutzername wird live aus dem ersten Buchstaben des Vornamens + Nachnamen generiert, mit Umlaut-Ersetzung und Konfliktauflösung per Suffix.
Die Live-Vorschau auf Tab 1 zeigt den generierten Benutzernamen, den UPN und das automatische Passwort, bevor irgendetwas in AD geschrieben wird. Das Passwort wird unmittelbar nach erfolgreicher Kontoerstellung in die Zwischenablage kopiert.
UPN : [email protected]
Display Name : Thomas Müller
Department : IT Infrastructure
Title : System Administrator
Manager : Schmidt, Anna
Phone : +49 89 / … - 142
SELECTED GROUPS
- VPN Access
- Microsoft 365 E3
- All Staff DL
Exchange-Postfach als Shared Mailbox bereitstellen
Erstellt ein freigegebenes Postfach in einer hybriden Exchange-/Exchange-Online-Umgebung per PowerShell Remoting. Die Live-Vorschau-Karte aktualisiert sich während der Eingabe und zeigt die finale SMTP-Adresse, die Routing-Adresse und den GAL-Sichtbarkeitsstatus, bevor eine Remote-Sitzung geöffnet wird.
Automatischer Abgleich zwischen Personio HR und Active Directory
Ruft alle Mitarbeiter aus der Personio API v2 ab und vergleicht Position, Abteilung und Vorgesetzten für jeden zugeordneten AD-Benutzer. Das Ergebnis ist eine Differenztabelle, in der jede Zeile unabhängig zur Übernahme ausgewählt werden kann.
Die Auflösung der Abteilungsnamen erfolgt zweistufig: Zuerst wird ein Massenabruf der Organisationseinheiten versucht; ist dieser nicht verfügbar, wechselt das Tool zu Abrufen pro Benutzer — transparent und ohne Eingriff des Bedieners.
Mock-Modus: Sind keine API-Anmeldedaten konfiguriert, arbeitet das Modul mit statischen Testmitarbeitern — Oberfläche und Diff-Logik lassen sich ohne einen aktiven Personio-Tenant testen.
| USER | FIELD | AD CURRENT | PERSONIO NEW | STATUS | |
|---|---|---|---|---|---|
| k.braun | Title | Junior Developer | Software Engineer | Pending | |
| k.braun | Description | Junior Developer | Software Engineer | Pending | |
| m.weber | Department | Sales | Key Account | Pending | |
| s.hoffmann | Manager | r.klein | a.schmidt | Pending | |
| l.fischer | Title | Werkstudent | Working Student | Applied |
Strukturierter Ablauf zur Deaktivierung von Mitarbeitern
Ein suchbasiertes Formular — Namen oder E-Mail eingeben, um einen Mitarbeiter zu finden, seine AD-Karte prüfen (Gruppen, Abteilung, Vorgesetzter) und die Postfach-Behandlung wählen. Eine verpflichtende Bestätigungs-Checkbox und das übliche Audit-Fenster verhindern versehentliche Ausführungen.
Technologie-Stack
Wird als eine einzige eigenständige .exe-Datei (win-x64) ausgeliefert, sodass auf den Admin-Rechnern keine .NET-Laufzeit installiert werden muss. Die Konfiguration liegt in appsettings.json neben der ausführbaren Datei und gelangt nie ins Repository.
| Schicht | Technologie | Anmerkungen |
|---|---|---|
| Anwendung | .NET 9 / WPF | Eigenständige exe-Datei (single-file), win-x64; veröffentlicht per dotnet publish |
| Active Directory | System.DirectoryServices | AccountManagement für Kontooperationen + roher DirectorySearcher für Massenauslesung |
| Exchange | PowerShell Remoting | Microsoft.PowerShell.SDK; PSSession zu On-Prem-Exchange über Invoke-Command |
| HR-Integration | Personio API v2 | HttpClient + System.Text.Json; Paginierung; Mock-Modus ohne Anmeldedaten |
| Authentifizierung | Windows Credential Manager | P/Invoke auf advapi32.dll (CredReadW / CredWriteW); stille Auto-Anmeldung |
| Secrets | 1Password CLI | API-Schlüssel und andere sensible Daten werden zur Laufzeit injiziert; keine Secrets in Konfigurationsdateien |
| DI / Config | Microsoft.Extensions.DI | Typisierte Optionen; appsettings.json in gitignore, Beispiel im Repo |
| Audit | IAuditLogger | Tages-Logdatei in %APPDATA%\AdminSuite\Audit\; strukturierte Einträge |
| CI / Build | GitHub Actions + xUnit | Build + Tests bei jedem Push nach master; Artefakt als single-file exe |
Ergebnis
AdminSuite hat die häufigsten Onboarding-Fehler beseitigt — falsche OU, fehlendes Postfach, vergessene Gruppenzuweisungen — indem jeder Schritt sichtbar gemacht und eine ausdrückliche Bestätigung verlangt wird. Das Audit-Log beantwortet sofort die Frage „wer hat was und wann geändert“, ohne im Windows-Ereignisprotokoll graben zu müssen.
Das Personio-Sync-Modul verkürzte die Synchronisation der HR-Daten mit Active Directory von einem monatlichen, manuellen Export zu einer On-Demand-Operation, die für über 170 Mitarbeiter in weniger als zwei Minuten abgeschlossen ist.
Secrets wie API-Schlüssel werden zur Laufzeit über die 1Password CLI injiziert — sie liegen weder in Konfigurationsdateien noch im Repository. Das Projekt befindet sich in aktiver Entwicklung; der nächste geplante Schritt ist eine erweiterte Testabdeckung der AD-Service-Schicht.