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] $_"
}
}