Benutzername auf Namenskonvention prüfen - Powershell
Inhalt
Kurz & knapp: Dieses PowerShell-Skript prüft alle Active-Directory-Benutzer gegen eine Namenskonvention (Standard: 6 Zeichen Nachname + 2 Zeichen Vorname) und meldet jeden
SamAccountName, der davon abweicht. Die Längen sind über$intLaengestrNachnameund$intLaengestrVornameanpassbar.
Aktueller Stand
Stand: Juni 2026
- Das Skript nutzt das RSAT-Modul
ActiveDirectoryund gilt für on-premises AD. In reinen Microsoft-Entra-ID-Umgebungen stehtGet-ADUsernicht zur Verfügung — dort übernimmt das Microsoft Graph PowerShell SDK (Get-MgUser). - In PowerShell 7+ wird für
-Filterdie String-Syntax empfohlen (-Filter "Name -like '*'") statt des Skriptblocks.
Erläuterung
Das Skript prüft folgende Richtlinie: Nachname 6 Zeichen, Vorname 2 Zeichen. Es generiert aus Vor- und Nachname einen Benutzernamen und prüft diesen auf Richtlinienkonformität (vergleicht den aktuellen SamAccountName). Durch das Verändern der Variablen intLaengestrVorname und intLaengestrNachname kann Einfluss auf die Generierung genommen werden.
Anzupassen: DOMAINCONTROLLER, ORGANISATIONSEINHEIT, DOMÄNE und PFAD müssen noch angepasst werden!
Sie können die Ausgabe in eine Datei speichern. Entfernen Sie die # bei “Out-File” im unteren drittel.
Skript
<#
Author: Jan Weis
Version: 0.1
Version History:
Purpose: Vergleicht den Benutzernamen mit einer Namenskonvention ( 6 Buchstaben Nachname, 2 Buchstaben Vorname )
#>
#requires -Version 1 -Modules ActiveDirectory
# Deklaration
[String]$strKonvention = ''
[String]$strVorname = ''
[String]$strNachname = ''
[String]$SamAccountName = ''
[Int]$MissingChars = 0
[Int]$intLaengestrVorname = 2
[Int]$intLaengestrNachname = 6
# Abfrage der AD-Benutzer
Write-Host -Object '[+] Informationen werden abgerufen. Bitte warten...'
try
{
$ADUser = Get-ADUser -Filter { Name -like '*'} -Properties SamAccountName -AuthType Negotiate -Server 'DEIN-DC' -ErrorAction SilentlyContinue -SearchBase 'OU=Users,DC=domain,DC=local'
Write-Host -Object '[OK!]' -ForegroundColor Green
}
catch
{
Write-Host -Object "[ERROR] Fehler in der AD-Abfrage!`n$_" -ForegroundColor Red
Exit
}
# Objektverarbeitung
foreach ($User in $ADUser)
{
try
{
# Füllen der Variablen
$strVorname = $User.GivenName
$strNachname = $User.Surname
$SamAccountName = $User.SamAccountName
# Benutzernamen generieren
If ( $strNachname.Length -ge $intLaengestrNachname )
{
# generiere
$strKonvention = $strNachname.SubString(0,$intLaengestrNachname) + $strVorname.Substring(0,$intLaengestrVorname)
}
# Benutzernamen generieren
If ( $strNachname.Length -lt $intLaengestrNachname )
{
# Berechne fehlende Zeichen
$MissingChars = $intLaengestrNachname - ($strNachname.length)
# generiere
$strKonvention = $strNachname + ($strVorname.Substring(0,($intLaengestrVorname+$MissingChars)))
}
# Vergleiche die strKonvention mit dem Benutzerobjekt
if ($SamAccountName -notlike $strKonvention)
{
Write-Host -Object "[!!] Unstimmigkeit gefunden! Vorname:'$strVorname', Nachname:'$strNachname', Erwartet:$strKonvention, Vorhanden:$SamAccountName" -ForegroundColor Yellow
#Out-File -FilePath 'PFAD' -Append -InputObject "[!!] Unstimmigkeit gefunden! Vorname:'$strVorname', Nachname:'$strNachname', Erwartet:$strKonvention, Vorhanden:$SamAccountName"
}
}
catch
{
Write-Host -Object "[ERROR] $_"
}
} Kategorien: Active DirectorySkripte
Kommentare
Kommentare werden von giscus / GitHub geladen. Dabei wird deine IP-Adresse an GitHub (USA) übertragen. Näheres in der Datenschutzerklärung.