Viele Programme, die in einer Active-Directory Umgebung verwendet werden, funktionieren nur dann gut, wenn sie mit Daten aus dem AD arbeiten können. Der Zugriff von diversen Dritthersteller-Programmen ist aber immer mit Vorsicht zu genießen. Um solche Diskussionen gar nicht erst anzufachen, bieten einige Programme die Möglichkeit über die Windows eigenen Umgebungsvariablen auf Daten zuzugreifen. Nun stellt sich nur eine Frage:Wie bekomme ich die Daten vom AD in die lokalen Umgebungsvariablen?

Das Szenario

Stellen wir uns einmal folgendes vor: Wir haben ein Programm, dass auf den DisplayName, die E-Mailadresse und den Titel eines Benutzers zugreifen möchte. Die Umgebungsvariablen sollen entsprechend ad_displayName, ad_email und ad_title heißen.

Die LDAP-Abfrage

Über CreateObjekt("ADSysteminfo") und GetObject(LDAP-ABFRAGE) bekommt man diverse Informationen aus dem AD. In unserem Fall sieht das wie folgt aus:

Set strSysInfo = CreateObject("ADSysteminfo")

Set ldapUser = GetObject("LDAP://" & strSysInfo.Username)

Der Befehl strSysInfo.Username liefert hier den aktuell angemeldeten User zurück. GetObject(...) liefert dann das komplette AD-Objekt des Benutzers zurück. Über ldapUser.department bekommt man jetzt zum Beispiel die Abteilung des Benutzers zurück gegeben. Für unser Vorhaben benötigen wir nun folgende 3 Befehle:

displayName = ldapUser.displayName

email = ldapUser.mail

title = ldapUser.title

Environment Variables und VB-Skript

Um in VB auf Umgebungsvariablen zugreifen zu können, benötigt man zuerst folgende Befehle:

Set shellObject = CreateObject("WScript.Shell")

Set environment = shellObject.Environment("USER")

In shellObject.Environment(...) kann USER oder SYSTEM einsetzen. Entsprechend werden die Umgebungsvariablen für den Benutzerkontext oder Systemkontext gesetzt. Variablen im Benutzerkontext werden bei der Abmeldung gelöscht.

Erzeugen und setzen einer Umgebungsvariable geht nun in einem Schritt:

environment("ad_displayName") = displayName

Für E-Mailadresse und Titel funktioniert das Ganze analog:

environment("ad_email") = email

environment("ad_title") = title