Jump to content

ADUser Konten vergleichen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Community,

 

ich habe das Problem, dass ich mehrere tausend Konten gegenübersstellen soll.

Wir haben die Konten aus unterschiedlichen Domänen per Powershell ausgelesen und in Excel exportiert. Jetzt ist es natürlich sehr mühsam, die gegenüberzustellen und manuell abzugleichen.

 

Ziel ist es möglichst einheitliche AD Konten zu haben mit der Namenskonvention 6(Nachname)+2(Vorname) bei Schultz, Michael. Also z.B. "SchultMi".

 

Bsp:

 

Domäne 1

SchultMi (alles korrekt)

 

Domäne 2

SchultzM (wäre hier falsch, da es 7+1 entspricht)

 

Jetzt gibt es natürlich auch andere Namenskonstrukte mit Zahlen, die herausgefiltert werden sollen. Sowas bizarres wie "Schult82M" oder auch Konstrukte wie "SchuMich".

 

Wie kann man die falschen "Erbsen" jetzt jeweils herausfiltern, ohne die händisch alle abzugleichen?

Das ist in hierarchisch gewachsenen Domänen ja ein häufiges Problem, dass es Abweichungen bei den Namen gibt.

 

Schlussendlich wäre es gut, wenn man die User tabellarisch gegenüberstellen kann. Leider hat nicht jeder User in jeder Domäne auch ein Konto.

Eine Domäne hat 22 000 Benutzer während eine andere Domäne nur 500 Benutzer hat.

 

Ist ziemlich tricky, aber ich hoffe, dass der Gesamtkontext klargeworden ist. Am wichtigsten wäre es die falschen Namen herauszubekommen.

 

Vielen Dank vorab.

 

Kimi

Link zu diesem Kommentar

Moin,

 

das wird nur mit hohem manuellem Aufwand gehen, denn bei "historischen" Daten wird ja jemand entscheiden müssen, was Sache ist. Du kannst dir höchstens mit den Mitteln von Excel (oder, wenn du das umsetzen kannst, vielleicht mit Skripten) den Prozess etwas erleichtern, aber was du dazu genau tun musst, dürfte sehr individuell sein, daher kann man dir da kaum eine Anleitung geben.

 

Gibt es denn ein Feld, das in allen Welten die Konten eindeutig identifiziert? Sowas wie Mailadresse, Personalnummer oder so? Wenn ja, dann wäre das der Anker, auf dessen Basis du den Vergleich bauen könntest.

 

Gruß, Nils

Link zu diesem Kommentar

Ja die Umwandlung ist dann ja noch eine ganz andere Sache. Aber ist Powershell nicht dazu in der Lage die Anzahl von Zeichen eines Wortes herauszufinden?

 

Würde also so ablaufen können = Lese die ersten 6 Zeichen von Last name aus und dann noch die ersten 2 Zeichen von FirstName. Vergleiche das Konstrukt dann mit User Logon tName. Wenn unterschiedlich, schreibe in Datei XYZ.

 

Der User Logon Name ist auf jeden Fall einzigartig.

 

Bin leider kein Powershell Pro :-(

Link zu diesem Kommentar
  • 4 Wochen später...

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.

 

Achtung: DOMAINCONTROLLER, ORAGANISATIONSEINHEIT, DOMÄNE und PFAD müssen noch angepasst werden!

 

Viel Erfolg mit meinem Skript  :)

 

Skript

#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...' -ForegroundColor Yellow -NoNewline
try
{
    $ADUser = Get-ADUser -Filter {
        Name -like '*'
    } -Properties SamAccountName -AuthType Negotiate -Server 'DOMAINCONTROLLER' -ErrorAction SilentlyContinue -SearchBase 'OU=ORGANISATIONSEINHEIT,DC=DOMÄNE,DC=DOMÄNE'
    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] $_"
    }
}

bearbeitet von MurdocX
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...