QMM Quest Migration Manager for AD – Directory Synchronization DSA überprüfen
Ich habe nach einer Möglichkeit gesucht die Synchronisation von Benutzerobjekten mit dem Quest Migration Manager for AD zu überprüfen oder zu überwachen. Mir fehlte eine schnelle Übersicht, ob neue angelegte Benutzerkonten auch in der Ziel Domäne angelegt werden.
Gelöst habe ich das mit einem kleinen Powershell Script. Zur Unterstützung habe ich die frei verfügbaren Powershell Commandlets von Quest installiert: ActiveRoles Management Shell for Active Directory. Diese bieten sehr schöne und enfache Möglichkeiten um mit Active Directory Objekten zu arbeiten und können hier heruntergeladen werden:
https://www.quest.com/powershell/activeroles-server.aspx
QMM Directory Synchronization – Powershell Skript
Nun zu dem Skript. Ich habe die Idee umgesetzt indem ich einfach alle Benutzerobjekte, welche an einem bestimmten Tag angelegt wurden, gezählt habe. Diese Zählung wird in der Quell und Zieldomäne durchgeführt. Die Anzahl der Objekte sollte gleich sein.
Um alle Benutzerobjekte, welche an einem bestimmten Tag angelegt wurden, zu zählen bietet sich das Attribute [whenCreated] an. Diese Attribute enthält das [Creation Date] des Objektes und wird in der Notation [YYYYMMDDHHMMSS.OZ] gespeichert.
Somit musste ich zunächst das Datum in diese Notation umwandeln:
1 2 3 4 5 6 |
$today = get-date -format u $date = $today.split(" ")[0] $year= $date.split("-")[0] $month= $date.split("-")[1] $day= $date.split("-")[2] $ldapdate=$year + $month + $day + "000000.0Z" |
Beispiel: $ldapdate=“20110927000000.0Z“
Mit dem Quest Commandlet [connect-qadservice] kann eine Verbindung zu einer Active Directory Domain hergestellt werden.
1 |
connect-qadservice -service SourceDomain.com |
Das Quest Commandlet [get-QadUser] kann man Benutzerkonten mit einem [-ldapfilter] einlesen.
1 |
$SRC=get-qaduser -sl 0 -ldapfilter "(whenCreated>=$ldapdate)" |
In der Variablen $SRC stehen alle Benutzerkonten, welche am Tage [$ldapdate] in der Quelldomäne angelegt wurden.
Den gleichen Schritt führen wir jetzt noch mal für die Zieldomäne aus:
1 2 |
connect-qadservice -service TargetDomain.com $TGT=get-qaduser -sl 0 -ldapfilter "(whenCreated>=$ldapdate)" |
Nun kann die Anzahl der Objekte über die Funktion [.count] ausgegeben werden:
1 2 |
“Benutzerkonten in Quelldomäne: “ + $SRC.count “Benutzerkonten in Zieldomäne: “ + $TGT.count |
Hier noch mal das komplette Skript:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
add-PSSnapin "Quest.ActiveRoles.ADManagement" -ErrorAction:SilentlyContinue $today = get-date -format u $date = $today.split(" ")[0] $year= $date.split("-")[0] $month= $date.split("-")[1] $day= $date.split("-")[2] $ldapdate=$year + $month + $day + "000000.0Z" connect-qadservice -service SourceDomain.com $SRC=get-qaduser -sl 0 -ldapfilter "(whenCreated>=$ldapdate)" connect-qadservice -service TargetDomain.com $TGT=get-qaduser -sl 0 -ldapfilter "(whenCreated>=$ldapdate)" “Benutzerkonten in Quelldomäne: “ + $SRC.count “Benutzerkonten in Zieldomäne: “ + $TGT.count |
Leave a Reply
<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>