LCSSync

Das VBScript LCSSync hilft mir bei Kunden eine Testinstallation eines Live Communication Servers 2005/2007 zu installieren. LCS erweitert das Active Directory Schema, was in produktiven Umgebungen nicht gerade gerne gesehen wird, wenn es sich um eine Testinstallation oder Piloten handelt. Natürlich könnten Sie nun ein komplett autarkes Testfeld aufbauen, aber wir wissen alle, das so ein echter Test kaum möglich ist. Der Lösungsweg kann dann die Installation des LCS in einer eigenständigen TestUmgebung sein, die trotzdem mit der Produktion verbunden ist.

LCS-Hosting

Die Funktion einer solchen TestUmgebung basiert auf dem Hostingansatz von LCS. Sie können tatsächlich LCS so installieren, wie es ein Dienstleister auch tun könnte: Ein eigener Forest betreibt die LCS-Server und enthält für jeden aktiven Anwender einen "Disabled Account". Diesem Konto muss man nur die SID des eigentlichen Anwenders in dem Feld "msRTCSIP-OriginatorSID" hinterlegen.

LCS Hosting

Wer sich schon mal mit Exchange Hosting beschäftigt hat, wird diese Konstruktion sicher schon können. Auch hier kommen deaktivierte Konten in einem eigenen Ressourceforest zum Einsatz.

Wozu LCSSYNC ?

Wenn das so einfach ist, dann können Sie ja sofort loslegen. Nun ja wenn Sie nun von Hand die Konten im LCS-Forest anlegen und im zweiten Schritt die SIDs der aktiven Benutzer im richtigen Format dann wieder in das Feld im Zielforst eintragen wollen, können Sie das gerne tun. LCSSync vereinfacht dies sowohl für einen Testbetrieb als auch für einen produktiven Einsatz.

Hinweis:
Es gibt auch ein Modul "LCSSYNC", welches im MIIS eingebunden werden kann, und ähnliche Aufgaben erfüllt. Mein VBScript ist natürlich sehr viel einfacher gestrickt, aber funktioniert hierfür ebenfalls.

So arbeitet LCSSYNC

LCSSync liest einfach eine vorgegebene Gruppe im Benutzerforest aus, um holt sich über das Feld "memberOf" die Mitglieder. Dann liegt es für jedes Mitglied ein deaktiviertes Konto im Ressourcen Forest an, und vergibt ihm die entsprechende SID. Zusätzlich kopiert es natürlich noch einige Felder wie Telefonnummer, Firma, Straße etc., da diese auch vom LCS genutzt werden können.

Damit das Konto dann auch vom LCS genutzt werden kann, werden natürlich noch ein paar für LCS erforderliche Felder gesetzt wie:

  • msRTCSIP-OriginatorSID
    Enthält die SID des Benutzers
  • msRTCSIP-PrimaryHomeServer
    Enthält den DN des Servers der im Skript vordefiniert wird.
  • msRTCSIP-PrimaryUSERAddress
    Enthält die Mailadresse des Benutzers (aus dem Feld "mail" der Quelle)
  • msRTCSIP-USEREnabled
    Wird auf "true" gesetzt

Damit ist der Benutzer zumindest rudimentär für den Communication Server "bekannt". Da es ein VBScript ist, sind eigene Erweiterungen natürlich ganz einfach machbar.

Zum Schluss prüft das Skript noch, ob Objekte in der Ziel-OU vorhanden sind, die nicht durch diesen Replikationslauf erstellt wurden und löscht diese dann ohne weitere Rückfrage.

LCSSYNC einsetzen

LCSSync muss am Anfang über Konstanten mit den entsprechenden Daten gefüttert werden: Hier ein Auszug des Skripts:

const conLCSTargetOU = "OU=LCSUSER,DC=lcs,DC=msxfaq,DC=com"
const conLCSTargetDC = "LCSDC.lcs.msxfaq.com/"
const conLCSGroup = "CN=LCS-TestUSER,OU=Groups,DC=MSXFAQ,DC=com"  
const conSIPServerDN = "CN=LC Services,CN=Microsoft,CN=LCSSERVER,.....=msxfaq,DC=com"

Das Feld conLCSGroup bestimmt die Gruppe, deren Mitglieder für den Einsatz "freigeschaltet" werden. Achten Sie darauf, dass es sich nicht um einen "Primäre Gruppe" des Benutzers handelt, da diese im Active Directory nicht im Feld "memberOf" aufgeführt wird.

Über den TargetDC und die TargetOU wird spezifiziert, wo das Skript die deaktivieren Benutzer anlegen soll und das Feld conSIPServerDN gibt den distinguishedName des LCS Home Servers vor.

Download

Bitte haben Sie Verständnis, dass sehr leistungsfähige Scripte, die weit über eine Funktion als Muster" hinausgehen, nicht öffentlich verfügbar sind.
Informationen, warum diese Skripte nicht öffentlich sind, finden Sie auf nicht public.

Weitere Links