Import einer SharePoint Kontaktliste in Exchange Online auf Office 365

In der jüngsten Vergangenheit erreichten uns vermehrt Wünsche, Funktionen und Inhalte aus On Premise Lösungen in die Welt des Office 365 zu implementieren. Die Plattform spricht für sich, ist smart und definitiv das Tool der Zukunft. Oft sind diese Vorhaben jedoch gescheitert, weil die Möglichkeiten in der Cloud begrenzt sind und keine Powershell Zugriffe ermöglichen.

Nun gibt es allerdings eine einfache Möglichkeit diese Hürde zu umgehen. Im Folgenden sei diese Prozedur am Beispiel des Imports einer SharePoint Kontaktliste für Exchange Online veranschaulicht. Eine zweite Herausforderung hierbei stellte die Tatsache dar, dass die Quelle der Daten ein anderes Tool ist, als jenes, was den Empfänger darstellt.

 

Extraktion der Daten und Aufbereitung für den Import

Da der SharePoint ein Tool im Baukastenprinzip ist, können dort Listen, welche einen Excel Charakter haben, beliebig erzeugt und gefüllt werden. In diesem Beispiel handelte es sich um eine Kontaktliste, bzw. ein Telefonbuch, welches mit Personen gefüllt wurde. Desweiteren wurden Attribute gepflegt, welche die Person näher beschreiben. Also diverse Telefonnummern, Anschrift, Abteilung, E-Mail, etc.

Im SharePoint gibt es zur Extraktion dieser Liste die Funktion „Export to Excel“. Das daraus resultierende Excel File kann so aber nicht für den Import verwendet werden. Zunächst verlangt der Import eine Datei im CSV-Format und außerdem liest der Import nur die erste Spalte der Datei aus. Das bedeutet, alle Inhalte der Excel Datei müssen verkettet und durch Komma getrennt in die erste Spalte geschrieben werden.

Da der Import in zwei Schritten erfolgt, muss die ursprüngliche Datei außerdem in zwei separaten Dateien aufgehen. Im ersten Schritt des Imports werden nur die Attribute Username, E-Mail sowie maximal noch Vor- und Zuname importiert. Diese Informationen müssen also in der ersten Spalte der ersten Datei verkettet hinterlegt sein. Alle übrigen Informationen können dann im zweiten Schritt ergänzt werden. Dazu benötigt man eine zweite Datei mit den übrigen Informationen wie beispielsweise Telefonnummern und Anschrift.

 

Verbindung zum Exchange Online via Powershell

Um sich mit dem Exchange Online verbinden zu können, muss zunächst die Verbindung mit einem lokalen Remotedesktop hergestellt werden. Nachdem die Powershell als Administrator ausgeführt wurde, muss zu Beginn einmalig der Befehl

 

Set-ExecutionPolicy RemoteSigned


ausgeführt werden, um die Remoteverbindung zu ermöglichen. Im Anschluss daran wird mit dem Befehl

 

$UserCredential = Get-Credential


die Abfrage nach dem Exchange Online Client aufgerufen. Hier bietet sich ein Dummy User an, welchen man mit Administrator-Rechten auf dem Exchange Online im Vorfeld ausstatten sollte, um sich mit ausreichender Berechtigung auf den Exchange Online zu verbinden. Durch den Befehl

 

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection


werden alle Kommandos des Exchange Online, welche der Berechtigungsstufe erlaubt sind, geladen. Nun muss nur noch eine Session gestartet werden, um den Import beginnen zu können. Die Session wird durch den Befehl

 

Import-PSSession $Session

 

gestartet und muss nach Beenidgung der Session durch den Befehl

 

Remove-PSSession $Session

 

geschlossen werden.

 

Import der Kontaktliste via CSV-Import

Wenn die Verbindung zum Exchange Online Server erfolgreich hergestellt wurde und die CSV-Dateien ordnungsgemäß auf dem lokalen Remoteserver bereitgelegt wurden, kann der Import der Liste nun erfolgen. Für den Import gibt es ein spezielles Kommando, welches für einen Massenimport, wie bei einer Kontaktliste, prädestiniert ist.

Im ersten Schritt benötigt man die erste CSV-Datei mit dem Usernamen und der E-Mail. Dadurch wird im ersten Schritt der Kontakt im Exchange neu angelegt. Für einen Neueintrag benötigt der Exchange immer einen eindeutigen Namen und eine eindeutige Mailadresse.

 

Für den ersten Schritt wird der folgende Befehl benötigt:

 

Import-CSV datei1.csv | ForEach {New-MailContact –Name $_.Name –ExternalEmailAddress $_.ExternalEmailAddress}

 

Im Anschluss werden die Kontakte in alphabetischer Reihenfolge angelegt.

Damit nun auch die Sekundärinformationen an den Kontakten importiert werden können, muss die zweite CSV-Datei mit dem Befehl

 

Import-CSV datei2.csv | ForEach {Set-MailContact –Identity $_.Identity -City $_.City –StreetAddress $_.StreetAddress}

 

Importiert werden (Die Auswahl der Properties sei hier nur beispielhaft dargestellt und kann natürlich erweitert werden). Der Parameter Identity stellt quasi den Username dar, damit die Sekundärinformationen richtig adressiert werden können.

Nachdem der Befehl ausgeführt wurde, werden alle Informationen im Exchange ergänzt, welche in der CSV-Datei hinterlegt sind. Damit ist Schritt 2 sowie der Import der Kontaktliste aus dem SharePoint erfolgreich abgeschlossen.