AdminSuite — Desktop-Tool für die Windows-IT-Administration

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.

Ready
New UserAD account + mailbox
Shared MailboxCreate shared mailbox
Personio SyncAD ↔ Personio diff
OffboardingDeactivate employees
Audit LogToday's log file
← Select a module to begin
Ready — AD not loaded yet
Load AD Data
Preview
Create User
// Hauptfenster — modulare Navigation in der Seitenleiste + fixe Statusleiste

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.

4Integrierte Module
0Stille AD-Schreibvorgänge
1Eigenständige exe-Datei

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.

1
ChangeList erstellen
Feld, alter Wert, neuer Wert
2
Fenster anzeigen
Nutzer muss „Übernehmen“ klicken
3
Ausführen
AD-Schreibvorgang mit NetworkCredential
4
Audit-Log
strukturierter Eintrag, Tagesdatei

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

1
Neuer Benutzer

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.

User Data
Groups & Access
Summary & Execute
PERSONAL
FIRST NAME *
Thomas
LAST NAME *
Müller
PHONE EXTENSION
142
+49 89 / 123 456 - [ext]
ACCOUNT PREVIEW
t.mueller
GENERATED PASSWORD
Mx#9kP!2qRn
(copied to clipboard after creation)
ORGANISATION
MANAGER *
Schmidt, Anna
DEPARTMENT *
IT Infrastructure
POSITION *
System Administrator
NOTES
Username: t.tester (first initial + last name). Umlauts replaced automatically. Conflict → suffix 2 added.
// Neuer Benutzer · Tab 1 — Daten mit Live-Kontovorschau
User Data
Groups & Access
Summary & Execute
SUMMARY
SAMAccountName : t.mueller
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
EXECUTION LOG
[INFO] Creating AD account t.mueller…
[OK] Account created
[INFO] Setting attributes…
[OK] Department, Title, Manager set
[INFO] Enabling Remote Mailbox…
[OK] Remote mailbox provisioned
[INFO] Assigning groups (3)…
[OK] Groups assigned
[OK] Password copied to clipboard
[DONE] t.mueller created ✓
// Neuer Benutzer · Tab 3 — Zusammenfassung + Ausführungslog in Echtzeit

2
Freigegebenes Postfach

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.

SHARED MAILBOX
DISPLAY NAME *
Support Team
ALIAS *
support
lowercase, no spaces → [email protected]
FIRST NAME *
Support
LAST NAME *
Team
TARGET OU *
OU=SharedMailboxes,DC=corp,DC=local
Visible in Global Address List (GAL)
LIVE PREVIEW
EXCHANGE OBJECT
Support Team
ADDRESSES
GAL VISIBILITY
Visible — HiddenFromAddressLists: $false
LOG
[INFO] Connecting to Exchange…
[OK] PSSession established
[INFO] New-RemoteMailbox -Shared…
// Freigegebenes Postfach — Formular + Live-Vorschau von SMTP/GAL

3
Personio-Sync

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.

PERSONIO API STATUS
Live — 174 employees · api.personio.de
AD matched: 162 · unmatched: 12
Diffs found:
7
USERFIELDAD CURRENTPERSONIO NEWSTATUS
k.braunTitleJunior DeveloperSoftware EngineerPending
k.braunDescriptionJunior DeveloperSoftware EngineerPending
m.weberDepartmentSalesKey AccountPending
s.hoffmannManagerr.kleina.schmidtPending
l.fischerTitleWerkstudentWorking StudentApplied
[INFO] Fetching Personio employees (page 1/2)…
[OK] 174 employees · 162 AD matches · 7 diffs found
[INFO] Department: 158 resolved via per-ID fallback
// Personio-Sync — Differenztabelle mit Checkboxen pro Zeile

4
Offboarding

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.

SELECT EMPLOYEE
SEARCH
fischer
Fischer, Laura
Fischer, Markus
Fischer, Laura
Working Student · IT
Member of 4 groups
I confirm deactivation of l.fischer
MAILBOX OPTION
Keep as Shared Mailbox
Exchange Online conversion
Remove mailbox entirely
OFFBOARDING LOG
[INFO] Searching AD for 'fischer'…
[OK] 2 users found
[INFO] Loading user card: l.fischer
[OK] Member of 4 groups, manager: a.schmidt
[INFO] Starting offboarding: l.fischer
[INFO] Removing group memberships…
[OK] 4 groups removed
[INFO] Clearing phone, manager…
[OK] Attributes cleared
[INFO] Moving to Disabled OU…
[OK] OU move complete
[INFO] Disabling account…
[OK] Account disabled
[INFO] Converting mailbox → Shared…
[OK] Set-Mailbox -Type Shared
[DONE] l.fischer offboarded ✓
// Offboarding — Suche, Benutzerkarte, Postfach-Option, Ausführungslog

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.

SchichtTechnologieAnmerkungen
Anwendung.NET 9 / WPFEigenständige exe-Datei (single-file), win-x64; veröffentlicht per dotnet publish
Active DirectorySystem.DirectoryServicesAccountManagement für Kontooperationen + roher DirectorySearcher für Massenauslesung
ExchangePowerShell RemotingMicrosoft.PowerShell.SDK; PSSession zu On-Prem-Exchange über Invoke-Command
HR-IntegrationPersonio API v2HttpClient + System.Text.Json; Paginierung; Mock-Modus ohne Anmeldedaten
AuthentifizierungWindows Credential ManagerP/Invoke auf advapi32.dll (CredReadW / CredWriteW); stille Auto-Anmeldung
Secrets1Password CLIAPI-Schlüssel und andere sensible Daten werden zur Laufzeit injiziert; keine Secrets in Konfigurationsdateien
DI / ConfigMicrosoft.Extensions.DITypisierte Optionen; appsettings.json in gitignore, Beispiel im Repo
AuditIAuditLoggerTages-Logdatei in %APPDATA%\AdminSuite\Audit\; strukturierte Einträge
CI / BuildGitHub Actions + xUnitBuild + 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.

Brauchen Sie ein individuelles Programm?

Gerne konzipiere und entwickle ich ein Werkzeug, das genau zu Ihren IT-Prozessen passt.

Schreiben Sie mir