Powershell: mail Attribut korrigieren

Posted on: May 23, 2015 Posted by: Philipp Comments: 0

Powershell: mail Attribut korrigieren

Im Zuge eine Exchange Org2Org Migration wurden Postfächer in Mailuser konvertiert. Hierbei wurden alle Attribute aktualisiert.

Die primäre SMTP Adresse wird somit in das Attribut mail geschrieben.

Ein Ticketsystem hat dieses Attribut abgefragt und somit die E-Mail Adressen welche für das interne Mailrouting, zwischen den zwei Exchange Organisation verwendet werden publiziert.

Dieses Skript korrigiert das mail Attribut durch “stringreplacement”
Die alte Domain läuft unter Windows 2003R2. Daher kommt  Powershell ohne ActivDirectory Modul zum Einsatz.

#DN zum Domänencontroller angeben
$LDAPServerDN = "LDAP://DC1.domain.net/DC=domain,DC=net"
#User welcher Schreibrechte auf die User-Objekte hat angeben
$user = "domain.net\RTU_User"
#Passwort des User
$pass= "secure"
#Domäne welche ersetzt werden soll
$wrongdomain = "target.loc"
#neue Domäne für das mail Attribut
$rightdomain = "richtig.de"

    #Erstellen eines Objekt Directory Searcher mit der oben festgelegten DN nur mit Leserechten
    $search = New-Object DirectoryServices.DirectorySearcher([ADSI]$LDAPServerDN)
    #Suchfilter generieren, gesucht wird nach der Objektklasse User mit einem gefüllten Attribut mail mit Inhalt *@target.loc
    $search.filter = “(&(objectClass=user)(mail=*@$($wrongdomain)))”
    #Suchen
    $results = $search.Findall()
    #Ausgabe der Anzahl gefundener Objekte
    "found $($results.count) objects with wrong mail"
    #Alle Ergebnisse durchgehen
    foreach ($result in $results)
        {
        #Ergebnis um allen Attribute erweitern
        $resultexpand = $result | select -expand Properties
        #Attribut Mail ersetzen gegen die neue Domain
        $newmail = "$($resultexpand.mail)".replace("@$($wrongdomain)","@$($rightdomain)")
        #Ausgeben des alten Mail Attribut
        $resultexpand.mail
        #Ausgeben des neuen Mail Attribut
        $newmail
        #Erstellen eines Objekt Directory Entry mit der  DN Pfad des gefundenen User mit den oben angegebenen Zugangsdaten. Speichern des User in eine Variable
        $ADUser = New-Object System.DirectoryServices.DirectoryEntry ($result.path,$user,$pass)
        #Ändern des Mail Attribut in der Variable
        $ADUser.mail = $newmail
        #Schreiben der Änderung ins AD
        $ADUser.CommitChanges()
        }