Donnerstag, 18. November 2010

Import Exchange Global Address List (GAL) images into Active Directory (Part 3)

ADPhoto

Outlook 2010, Lync 2010 und diverse andere Lösungen können neben dem Namen und Mailadressen auch Bilder angezeigt werden. Hier zwei Beispiele: Einmal der Lync 2010 Client mit Herrn Deutinger (Ferrari Electronic) als Partner in der Federation und Herr Ulbrich in Outlook. 
 
Da stellt sich natürlich die Frage, wo dieses Bild hinterlegt ist. Im Fall von Outlook könnte man noch tricksen, indem man einen Kontakt mit dem Bild anlegt. In Lync kann ich ein Bild auf einem Webserver ablegen und über eine URL erreichbar machen und so "verbreiten".
Zumindest für Mitarbeiter ist es aber schon seit Windows 2003 möglich, solche Informationen im Active Directory mit zu hinterlegen.
Berechtigungen: Ein Benutzer kann sein Bild nicht selbst aktualisieren. Es muss also ein administrativer Benutzer sein, welcher auf das Feld "ThumbnailPhoto" zum Schreiben berechtigt ist.
Solche Updates muss also ein entsprechend auf das Benutzerobjekt privilegiertes Konto durchführen.

Hintergrund "ThumbnailPhoto"

Das Feld welches von Outlook, Exchange und Lync genutzt wird, ist das Property "ThumbnailPhoto". Allerdings gibt es noch andere Felder, die ähnliche Funktionen haben und daher leicht verwechselt werden können:
FeldnameSchema VersionTyp/Größe 
ThumbnailphotoWindows 2003 und höherOktet 0-10240 byte
Einwertig
Im GC ab Windows 2008
Einsatz in OCS/Outlook
jpegPhoto
http://msdn.microsoft.com/en-us/library/ms676813
Windows 2003 und höherOktet ohne grenzen
Mehrwertig
nicht genutzt
ThumbnaillogoWindows 2003 und höher0-32767
Einwertig
nicht genutzt
Relevant ist, wie gesagt, nur das Feld "Thumbnailphoto", dessen genaue Definition im Schema zu sehen ist:

Import mit Bordmittel

Da diese Funktion erstmalig mit Exchange 2010 und Outlook 2010 verfügbar wurde, gibt es auch ein Exchange Commandlet zum Import.
Import-RecipientDataProperty 
  -Identity username 
  -Picture -FileData ([Byte[]]$(Get-Content -Path "c:\user.jpg" -Encoding Byte -ReadCount 0))
Wer also die Bilder schön z.B. mit dem SamAccountName benannt hat, kann recht einfach eine Schleife durch das Verzeichnis der Bilder drehen und die dazu gehörigen Benutzer entsprechend aktualisieren. Allerdings kann dieses Commandlet das Bild nicht auf die richte Größe zusammenschrumpfen. Sie müssen schon selbst dafür sorgen, dass das Bild maximal 10 kB groß ist.

ADPhotoEdit

Wo Bordmittel an ihre Grenzen stoßen, öffnet sich ein Markt für Drittanbieter oder Freeware-Tools. Unter all den vielen Programmen und Skripten, die die JPG-Bilder in das passende Feld im AD importieren, gibt es mit ADPhotoEdit ein nettes Programm, welches die Verwaltung per GUI stark vereinfacht und sogar die Bilder zurecht schrumpfen kann.
Das Programm "AD Photo Edit" kann per GUI einfach Bilder anzeigen und auch verändern und wieder speichern.
http://www.cjwdev.co.uk/Software/ADPhotoEdit/Info.html
Das kleine ZIP-Paket muss einfach ausgepackt und das Setup aufgerufen werden.
Das Programm prüft beim Aufruf nach Updates, indem es versucht auf www.cjwdev.co.uk zuzugreifen.

Aber unschön ist es
Das Programm selbst ist ein kleines .NET Programm mit grade mal wenigen kb Größe. Wobei natürlich das .NET Framework vorhanden sein muss.
Nach dem Start suche sie nach den Benutzern. Wenn Sie im Filterfeld ein "*" eintragen, dann werden alle Benutzer gesucht.
Sie sehen dann sofort die Benutzer und neben dem SAMAccountName auch die Mailadresse und das Bild, sofern vorhanden. Das Bild ist dabei nicht auf eine bestimmte Größe (in Pixel) beschränkt, sondern in der Dateigröße. Das Programm ist smart genug, auch ein sehr großes Bild so zu verkleinern, dass es in die 10kb des Feldes ThumbnailPhoto passt. Da fehlt dann wirklich nur noch der Bulk Import.
Schade, dass ein Benutzer das Bild nicht selbst aktualisieren kann. Dazu fehlen ihm sowohl die Rechte als auch die Hilfsmittel.

Keine Kommentare:

Kommentar veröffentlichen

Enable SNMP on vmware 5.5 ESXi

Trying to start snmpd on vmware from where i get the following error: Call "HostServiceSystem.Start" for object "serviceSyste...