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, ORAGANISATIONSEINHEIT, 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]$MissigChars = 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 'HS2A' -ErrorAction SilentlyContinue -SearchBase 'OU=People,DC=hs-kempten,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 $MissigChars = $intLaengestrNachname - ($strNachname.length) # generiere $strKonvention = $strNachname + ($strVorname.Substring(0,($intLaengestrVorname+$MissigChars))) } # 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] $_" } }