Aug 24 2013

Office365: Kontakte in die GAL importieren

veröffentlicht in Kategorie Office365  

Hier mal eine detaillierte Anleitung zum CSV Import gemeinsamer Kontakte in die Globale Address Liste mit der Powershell

Eine Möglichkeit, Kontakte mit mehreren Benutzern auch auf Mobiltelefonen zu teilen, ist das Anlegen der Kontakte in der Globalen Adressliste, auch die GAL genannt. Kontakte, die in der GAL stehen werden zwar auf iPhone und Co auch nicht direkt angezeigt, aber man kann die GAL auf dem iPhone zumindest durchsuchen und findet so gemeinsame Kontakte, die in der GAL angelegt sind. Ja, ist auch nur ein recht kruder Workaround, aber besser als nix finde ich. Vielleicht kann das ja jemand brauchen, darum hier mal ne Anleitung dazu 

 

Wie bekommt man die Kontakte überhaupt in die GAL?

Wenn es dabei nur um eine handvoll von Adressen geht, kann man das notfalls auch von Hand im Exchange Control Panel (ECP) erledigen. Dazu loggt man sich im Office365 Adminportal ein und geht dann entweder im Administrator Menü auf Exchange oder im Fall der SmallBusiness Tarife zuerst ins OWA Outlook WebInterface und ändert dann die URL von https://../owa/irgendwas in https://…/ecp

Einen Kontakt in der GAL anlegen - übers das Webinterface

Einen Kontakt in der GAL anlegen – übers das Webinterface

Bei einer größeren Anzahl von Kontakten ist das allerdings etwas nervig. Die bequemere Alternative:

 

Der Import von Kontakten über eine CSV mit Hilfe der Powershell

Schritt 1: Anlegen einer Import Datei

Als erstes benötigen wir eine CSV Datei, welche die zu importierenden Kontakte beinhaltet. Ob wir die Datei nun von Hand erstellen, aus einer Adressverwaltung (oder dem Outlook Kontakte Ordner) heraus exportieren spielt eigentlich keine Rolle.. Ich habe hier mal eine sehr einfache Beispieldatei:

Vorname,Nachname,Firma,Email,Telefon
Max,Mustermann,Testfirma,muster@mustermann.de,+49755567890
Jane,Musterfrau,Musterfirma, jane@firma.de,+498912345

Wichtig ist erst mal nur: in der ersten Zeile sind die Spaltennamen und die einzelnen Spalten sind per Komma getrennt, immer ein Datensatz (also ein Kontakt)  pro Zeile.

Die CSV Datei legen wir uns erst mal lokal z.b. als D:\importe.csv ab.

 

Schritt 2: Powershell Verbindung herstellen

Wie man eine Powershell Verbindung herstellt habe ich in folgendem Blogpost ausführlich beschrieben:  Powershell Verbindung zu Exchange lesen und dann mit bestehender Verbindung hier in Schritt 3 weitermachen.

 

Schritt 3: Wir basteln uns einen passenden Import Befehl:

Der für den Import benötigt Befehl lautet Import-Csv. Der Befehl zum Anlegen eines Kontaktes ist New-MailContact. Das Ganze lassen wir in einer Schleife durchlaufen. New-MailContact braucht 2 Pflichtangaben: den Parameter -Name und den Parameter -ExternalEmailAddress. 

Also basteln wir uns nun mal ein ganz simples erstes Beispiel:

Import-CSV D:\importe.csv|%{New-MailContact  -ExternalEmailAddress $_.Email -Name ($_.Vorname+” “+$_.Nachname) }

Was macht dieser Befehl?

  • Nun, zunächst einmal geht er zeilenweise durch unsere CSV Datei durch und ruft für jede Zeile in der CSV Datei (ausser der Zeile 1, welche die Spaltennamen beinhaltet) den Befehl New-MailContact auf, um einen neuen Kontakt in der GAL anzulegen, die folgenden 2 Angaben weisen dann den entsprechenden Parametern die entsprechenden Spaltennamen aus der CSV Datei zu:
  • -ExternalEmailAddress $_.Email:
    heisst auf Deutsch: weise dem Parameter -ExternalEmailAddress den Inhalt unserer Spalte $_.Email aus der CSV Datei zu. 
    (Das $_. vorne dran ist ein Kennzeichen für die Variable der aktuellen Zeile, die uns beim Auslesen der CSV Datei übergeben wird)
  • -Name ($_.Vorname+” “+$_.Nachname):
    Weise dem Parameter -Name den Inhalt aus der Spalte Vorname plus einem Leerzeichen ” ” plus dem Inhalt der Spalte Nachnahme zu.

Als Ergebnis bekommen wir dann in der Powershell:

import-in-gal-sample1

und im ECP sieht es dann so aus:

import-in-gal-sample1b

Schonmal gar nicht so übel, schauen wir uns mal die Frau Musterfrau genauer an, sehen wir allerdings, dass da noch ein paar Felder gar nicht ausgefüllt sind:

sample1-kontakte-in-gal

Erster Versuch: nur -Name und -ExternalEmailAdresse wurden importiert

Der Anzeigename (eigentlich -Displayname) sowie der Alias (-Alias) wurden automatisch generiert, da wir dazu keine Angaben gemacht haben und vor der eMail Adresse steht nun plötzlich SMTP:. Das ist alles Ok, ganz am Ende schreib da noch’n Satz dazu.

Aber die 2 Felder: Vorname und Nachname sind z.b. noch leer. Das sind keine Pflichtfelder, die müssen wir nicht ausfüllen, aber die haben wir aber in unserer CSV drin stehen, also wollen wir die auch importieren. Dazu erweitern wir unseren Import Befehl um 2 zusätzliche Parameter:

 

Etwas erweiterter Import Befehl:

Import-CSV D:\importe.csv|%{New-MailContact  -ExternalEmailAddress $_.Email -Name ($_.Vorname+” “+$_.Nachname) -Firstname $_.Vorname -LastName $_.Nachname }

  • Neu hinzugekommen ist also: -FirstName und -LastName, diesen weisen wir wie gehabt unsere Spalten $_.Vorname bzw. $_.Nachname zu.

Ich lösch mal schnell die 2 Kontakte aus dem letzten Durchgang und dann starten wir den Import mit dem neuen, nun um Vor- und Nachnamen erweiterten Befehl erneut. Und nun schaut das so aus:

sample2-kontakte-in-gal

Neuer Versuch: jetzt mit zusätzlich -FirstName und -LastName

 

Perfekt :-) 

Ich will jetzt hier in dem Blogpost nicht zu weit in die Tiefe gehen, natürlich geht da noch mehr. Welche Angaben wir hier noch zusätzlich machen könnten, das steht in der Liste der Parameter für den New-MailContact Befehl hier in der Technet Bibliothek: http://technet.microsoft.com/en-us/library/bb124519(v=exchg.150).aspx (die Parameters Liste auf der Seite muss man erst aufklappen, bissl verwirrend).

Es gibt aber auch Angaben, die wir mit New-MailContact nicht machen können.. also gibt es noch einen Schritt 4:

 

Schritt 4: Weitere Angaben ergänzen

Wer genau aufgepasst hat, hat gemerkt: wir haben die Felder Firma und Telefon noch gar nicht importiert. Das stimmt, denn Angaben wie Telefon, Firma, Anschrift usw. wird von New-MailContact nicht unterstützt. Dazu brauchen wir ein weiteres Comandlet, und zwar Set-Contact, das wir wiederum in einer Scheife über unsere CSV laufen lassen und das nun die in Schritt 3 importierten Kontakte um die noch fehlenden Informationen Telefon und Firma ergänzen soll. 

Hier also ein Beispiel für Set-Contact in einer Schleife basierend auf die selbe importe.csv aus Schritt 1:

Import-Csv D:\importe..csv|%{Set-Contact -Identity $_.Email -Company $_.Firma -Phone $_.Telefon}

  • Mit diesem neuen Befehlskonstrukt gehen wir nun wieder durch unsere Importe.csv durch und weisen den zuvor angelegten Kontakten mit dem Befehl Set-Contact nun die zusätzlichen 2 Parameter -Company und -Phone  zu.
  • Neu ist hier zunächst der Parameter -Identity $_.Email, damit sagen wir wir Set-Contact, welchen Kontakt wir aktuell ändern wollen (nämlich den Kontakt, dessen eMail Adresse wir gerade aus der aktuellen Spalte $_.Email unserer Importe.csv auslesen).
  • Den 2 Parametern -Company und -Phone wird dann wie gehabt unsere Spalte Firma bzw. Telefon zugewiesen, also genau wie wir es oben schon mit den Namen usw. gemacht haben.

Auch hier bei Set-Contact gibt es noch viele weitere Parameter, die wir benutzen können, wenn uns diese Daten bekannt sind (und in unserer Import.csv enthalten oder von dort ableitbar sind), auch hier gibt wieder die Technet Bibliothek Auskunft, was wir alles benutzen können: http://technet.microsoft.com/en-us/library/bb124535(v=exchg.150).aspx

 

Noch ein paar Gedanken dazu:

  • Wichtig ist eigentlich erst mal nur, dass man die Syntax kapiert hat.  Die von Import-CSV zeilenweise aus der CSV gelesenen Werte stehen immer in $_.Spaltenname. Der Spaltenname wird in der 1. Zeile meiner CSV Datei definiert. Ob der Spaltenname in meiner CSV Datei nun Vorname, FirstName, Name oder XYZ oder sonstwas heisst, ist völlig egal, ich muss nur dem jeweils gewünschten -Parameter den korrekten, dazu passenden $_.Spaltennamen zuordnen. Das -Parameter muss ein für den jeweiligen Befehl (entweder New-MailContact oder Set-Contact) gültiger Parameter sein und bei $_.Spaltenname muss der Spaltenname auch so in Zeile 1 meiner CSV Datei stehen. Mehr ist das eigentlich nicht.
  • Die Pflichtangaben müssen beachtet werden, für New-MailContact ist das einmal der Parameter -Name und der Parameter -ExternalEmailAddress. Ob der Parameter -Name nun tatsächlich Vor- und Nachname enthält, oder eine Kombination aus Firma und Nachname – ob der aus einer eigenen Spalte in meiner CSV kommt oder wie in meinem Beispiel einfach “on the fly” aus den 2 Spalten Vorname + Leerzeichen + Nachname gebastelt wird, das ist Wurscht und richtet sich wohl primär danach, was Eure CSV Exporte so hergeben. Das kann jeder halten, wie er mag. Der -Name muss nur eindeutig sein. 
  • Wenn man die Kontakte aus Office heraus exportiert, steht vor der eMail Adresse oft noch das Protokoll vorne dran, also bei eMail meistens SMTP:. So ein vorangestelltes SMTP: stört nicht beim Import, könnt ihr stehen lassen, müsst ihr nicht erst noch von Hand weglöschen.
  • Pflichtangabe für Set-Contact ist die Angabe der Identity, wobei man anstelle der von mir in Schritt 4 benutzten eMail Adresse in Form der Spalte $_.Email auch Displayname, Alias, und andere verwenden könnte, wenn sich diese aus der Import.csv ableiten lassen. Im konkreten Beispiel hätte ich also auch -Identity ($_.Vorname+” “+$_.Nachname) nutzen können, mit gefiel die eindeutig direkt ablesbare Email Spalte aber besser.
  • In Schritt 3 könnte man z.b. noch die Initialen der Kontakte hinzufügen, dazu könnten wir in unserer CSV Datei noch eine Spalte Initialen hinzufügen, die Initialen dort eintragen und unseren Import-Befehl in Schritt 3 um -Initials $_.Initialen erweitern. Oder man nutzt die String-Funktionen der Powershell und lässt sich die Initialen aus den jeweils ersten Buchstaben von Vorname und Nachname selbst ermitteln. Man könnte auch noch -DisplayName und -Alias explizit angeben – anstatt sie wie in meinem Beispiel durch weglassen automatisch generieren zu lassen.
  • In Schritt 4 könnten wir z.b. auch noch die Anschrift und Ort mit hinzufügen.. dazu würde man die import.csv erweitern und dann eben noch -City und -StreetAddress zum Befehl in Schritt 4 hinzufügen. Oder Mobiltelefon, oder oder..

Um die Kontakte in der GAL auf einem iPhone / iPad dann wiederzufinden gibts die Anleitung: GAL mit dem iPhone durchsuchen

.

One response so far

One Response to “Office365: Kontakte in die GAL importieren”

  1. Michaelon 15 Sep 2015 at 21:06

    Hallo,

    danke für dieses Tutorial!
    Mit Hilfe deiner ausführlichen Beschreibung habe ich nun alle globalen Kontakt importieren können.

    Könntest du vielleicht auch noch erklären, wie ich Kontakte über die gleiche CSV Datei nur einem bestimmten User zuordnen kann? Also so, dass diese anstatt in der GAL sofort dem jeweiligen Benutzer zugeordnet werden?

    Wäre nett, wenn Du mir hier vielleicht helfen könntest!

    Beste Grüße
    Michael

Comments RSS

Kommentar dazu? (Geht anonym und ganz ohne Anmeldung)