Benutzername auf Namenskonvention prüfen - Powershell

· zuletzt aktualisiert am · 2 min Lesezeit · von

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 $intLaengestrNachname und $intLaengestrVorname anpassbar.

Aktueller Stand

Stand: Juni 2026

  • Das Skript nutzt das RSAT-Modul ActiveDirectory und gilt für on-premises AD. In reinen Microsoft-Entra-ID-Umgebungen steht Get-ADUser nicht zur Verfügung — dort übernimmt das Microsoft Graph PowerShell SDK (Get-MgUser).
  • In PowerShell 7+ wird für -Filter die 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.