Wolfroc 10 Geschrieben 19. Februar 2008 Melden Teilen Geschrieben 19. Februar 2008 Guten Tag, ich habe folgendes Problem ich muss ein Skript schreiben, welches die Attribute Location, StreetAdress und Company bei den Benutzern unseres Active Directorys ändert. Da wir aber auch Aussenstellen haben, sollen die Änderungen nicht bei allen Nutzern vorgenommen werden. Vorgegebene Lösung (Abweichungen leider nicht möglich!): Beim Start des Scripts soll eine Inputbox erscheinen, in welche man die zu bearbeitende OU eingibt. Danach soll das Script in die entsprechende OU gehen und dort mittels Schleife und MsgBox alle in der OU befindlichen Nutzer mit ihrer aktuellen Konfiguration hinsichtlich StreetAdress, Location und Company anzeigen und fragen ob diese geändert werden soll. Soweit so gut. Die Umsezung dessen ist kein Thema. Das einzige Problem vor dem ich gerade stehe ist den richtigen LDAP-Pfad auf die OU zu finden. Hier mein Script (vielleicht sieht einer von euch meinen Fehler hinsichtlich des LDAP-Pfads): 'Deklaration und Initialisierung von Konstanten Dim vSelectedOU Const vCompany = "LK X" Const vStreetAddress = "Strasse 4" Const vLocation = "Beispielhausen" 'Aufbau einer Verbindung zum Active Directory Set adoConnection = CreateObject("ADODB.Connection") Set adoCommand = CreateObject("ADODB.Command") adoConnection.Provider = "ADsDSOOBject" adoConnection.Open "Active Directory Provider" Set adoCommand.ActiveConnection = adoConnection 'RootDSE an Object übergeben und den Domänenname einlesen Set objRootDSE = GetObject("LDAP://RootDSE") strDNSDomain = objRootDSE.Get("DefaultNamingContext") 'Abfrage auf User beschränken... strFilter = "(objectClass=user)" '... und gewünschte Felder festlegen (sowie "subtree" für alle (Unter-)OU) strQuery = "<LDAP://OU=LK X," & strDNSDomain & " >;" & strFilter _ & ";distinguishedName,sAMAccountName;subtree" adoCommand.CommandText = strQuery 'Eingabeaufforderung für die zu bearbeitende OU vSelectedOU = "Amt" & " " & Inputbox("Bitte wählen Sie die zu bearbeitende OU: ") 'MsgBox zum überprüfen des Variablenwerts vSelectedOU MsgBox(vSelectedOU) 'Abfrage ausführen Set adoRecordset = adoCommand.Execute Do Until adoRecordset.EOF 'Bei diesem LDAP-Pfad liegt das Problem Set obj = GetObject("LDAP://OU=Benutzer, OU=" & vSelectedOU &", OU=LK X , DC=LK, DC=test, DC=de" & _ adoRecordSet.Fields("distinguishedName")) obj.company = vCompany obj.StreetAddress = vStreetAddress obj.l = vLocation obj.SetInfo adoRecordSet.MoveNext Loop Bin für jede hilfreiche Antwort dankbar! Mit freundlichen Grüßen Timo Rauchhaus Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.