Zum Inhalt springen

Globales Adressbuch exportieren

Die Anforderung

ich arbeite just an einer Lösung für zentrale Outlook-Signaturen, die nicht ein Arm und ein Bein kosten.
Dazu verwende ich die Basis dieses Beitrags .
Die Daten kommen aus dem Active Directory. Jetzt benötige ich eine Information, die im Outlook-Adressbuch steht, aber im AD fehlt.
Man kann jetzt einen Azubi hinsetzen, der die ganzen Benutzer manuell anfasst und die Anpassung umsetzt. Dann wird man allerdings von diesem Azubi wegen der mordsspannenden Tätigkeit „gehasst“ und es ist trotz allem fehlerbehaftet.
Oder man automatisiert das Ganze.

Mein Problem dabei: ich habe keinen Zugriff auf den Exchange-Server des Konzerns, wo es sicher einen PowerShell-Einzeiler erledigen würde. Irgendwas Schickes mit „Get-GlobalAddressList“ vielleicht.
Es musste eine andere Lösung her, die ich unter msoutlook.info auch gefunden habe: ein Export des Adressbuchs nach Access.
Mein Plan war dann diese Daten nach Excel exportieren, in Excel filtern und dann ab in eine CSV-Datei, um von dort mit etwas PowerShell-Magie alles ins Active Directory zu übertragen.

Der Export nach Access

Dank Office 365 habe ich ein Access.
Gemäß der o.a. Anleitung habe ich eine neue Datenbank angelegt. Über den Reiter „Externe Daten“ wurde eine „Neue Datenquelle“- „Aus anderen Quellen“ – „Outlook-Ordner“ für den Import angelegt.

Eine leere Datenbank anlegen
Aus anderen Quellen

Als Quelle habe ich die „Offline Global Address List“ angegeben. Ich habe mir davon versprochen, dass der Import bei der großen Anzahl an Einträgen dann hinreichend zügig vonstatten gehen würde.

Import in eine neue Tabelle
Offline Global Address List geht schneller
Ohne Primärschlüssel
Los geht’s

Auch der Export aus dem lokal vorliegenden „Offline Global Address List“ dauert aufgrund der großen Anzahl der Daten gefühlt ewig. Der Assistent zeigte ab dem Klick auf „Fertigstellen“ über 45 min „Keine Rückmeldung“ an. Hier ist Durchhaltevermögen gefragt.

45 min Warten auf die Fertigstellung
Endlich speichern

Anpassung in Excel

Der Export nach Excel sind zwei Mausklicks.
An dieser Stelle habe ich dann gefiltert, denn die Benutzer von außerhalb des Standorts sind für mich uninteressant.
Das Ergebnis habe ich in ein neues Tabellenblatt kopiert. Den Benutzernamen erzeugte ich mittels der Verketten-Funktion.
Das Resultat wurde final in einer csv-Datei gespeichert.

Export nach Excel
Filtern in Excel

Import ins Active Directory

Mittels der beiden PowerShell-Commandlets „Import-CSV“ und „Set-ADUser“ war der Drops in wenigen Minuten gelutscht.

$collection = @(Import-Csv -Delimiter ';' -Encoding UTF8)
foreach ($item in $collection)
  {
Set-ADUser -Identity $item.sam -Replace @{pager=$item.konto}
 }

2 Kommentare

  1. Andreas Mey Andreas Mey

    Hallo
    der Expor funktioniert nur die MAils nicht.
    zB. dies wird aAngezeit nicht die Mails
    /o=lhw/ou=Exchange Administrative Group (xxxxxxxxxxxxxx)/cn=Recipients/cn=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-

    • oberguru oberguru

      Das ist richtig. Aber in der Regel kenne ich den Aufbau der E-Mail-Adressen meiner Domäne. Die sind per „=verketten()“ schnell in Excel zusammengeklöppelt. Die Ausnahmen von der Regel kennt man im Allgemeinen auch.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert