Hallo,
ich habe ein kleines Script erstellt, um aus unserer Active Directory nach Eingabe eines Computernamens bei diesem ein bestimmtes Attribut auszulesen und anzuzeigen.
Das Script an sich funktioniert einwandfrei und gibt zuverlässig den gewünschten Wert aus. Allerdings nur, wenn man es von einem PC ausführt, bei dem man schon mit einem User-Account angemeldet ist, der für die AD berechtigt ist. Ist man mit einem "normalen" Account angemeldet, funktioniert es auch mit einer vorgeschalteten Batch, in der man das Script mit "runas" und den entsprechenden berechtigten Anmeldedaten aufruft.
Nun wollte ich gerne diese Anmeldedaten schon in das Original-Script mit einbauen, um die Batch zu sparen, und habe dafür die folgenden vier Zeilen hinzugefügt:
objConnection.Properties("User ID") = "<Domain>\UxxxxxxS"
objConnection.Properties("Password") = "xxxxxxxx"
objConnection.Properties("Encrypt Password") = TRUE
objConnection.Properties("ADSI Flag") = 3
Insgesamt sieht dieses Script also so aus:
Lasse ich die vier Anmeldezeilen weg, funktioniert das Script wie oben beschrieben, aber mit diesen Zeilen bekomme ich das Script einfach nicht zum Laufen. Es erscheint jedesmal nur eine leere MsgBox, Wenn ich die Zeile "On Error Resume Next" weglasse, kommt die Fehlermeldung:
---------------------------
Windows Script Host
---------------------------
Skript: C:\Users\Uxxxxxx\Documents\Get.vbs
Zeile: 29
Zeichen: 1
Fehler: Die Verzeichniseigenschaft wurden nicht im Cache gefunden.
Code: 8000500D
Quelle: Active Directory
---------------------------
OK
---------------------------
Also in der Zeile "varDisplay = objComputer.Get("attrxyz")", bei der Abfrage des Attributes, bricht er ab. Ich habe in den Anmeldezeilen schon alle möglichen Varianten probiert, Username mit und ohne Domain, in der Form Uxxxxxx@xxx.yyy.de, als Distinguished Name, mit und ohne Encryption und mit den ADSI-Flags 1, 2 und 3, nichts funktioniert.
Kann mir hier bitte jemand helfen und mir sagen, ob und was da falsch ist oder vielleicht noch fehlt???
Vielen Dank!
VG
Frank
ich habe ein kleines Script erstellt, um aus unserer Active Directory nach Eingabe eines Computernamens bei diesem ein bestimmtes Attribut auszulesen und anzuzeigen.
Das Script an sich funktioniert einwandfrei und gibt zuverlässig den gewünschten Wert aus. Allerdings nur, wenn man es von einem PC ausführt, bei dem man schon mit einem User-Account angemeldet ist, der für die AD berechtigt ist. Ist man mit einem "normalen" Account angemeldet, funktioniert es auch mit einer vorgeschalteten Batch, in der man das Script mit "runas" und den entsprechenden berechtigten Anmeldedaten aufruft.
Nun wollte ich gerne diese Anmeldedaten schon in das Original-Script mit einbauen, um die Batch zu sparen, und habe dafür die folgenden vier Zeilen hinzugefügt:
objConnection.Properties("User ID") = "<Domain>\UxxxxxxS"
objConnection.Properties("Password") = "xxxxxxxx"
objConnection.Properties("Encrypt Password") = TRUE
objConnection.Properties("ADSI Flag") = 3
Insgesamt sieht dieses Script also so aus:
Visual Basic-Quellcode
- On Error Resume Next
- Dim WSObjekt
- WSObjekt = InputBox("WS-Nr. eingeben (ohne -LSG)") & "-lsg"
- Const ADS_SCOPE_SUBTREE = 2
- Set objConnection = CreateObject("ADODB.Connection")
- objConnection.Provider = "ADsDSOObject"
- objConnection.Properties("User ID") = "<Domain>\UxxxxxxS"
- objConnection.Properties("Password") = "xxxxxxxx"
- objConnection.Properties("Encrypt Password") = TRUE
- objConnection.Properties("ADSI Flag") = 3
- objConnection.Open "Active Directory Provider"
- Set objCommand = CreateObject("ADODB.Command")
- objCommand.ActiveConnection = objConnection
- objCommand.Properties("Page Size") = 100
- objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
- objCommand.CommandText = _
- "SELECT ADsPath FROM 'LDAP://OU=Computers,OU=LSG,OU=Company,DC=xxx,DC=yyy,DC=de' WHERE " _
- & "objectCategory='computer' AND Name='" & WSObjekt & "'"
- Set objRecordSet = objCommand.Execute
- objRecordSet.MoveFirst
- strADsPath = objRecordSet.Fields("ADsPath").Value
- Set objComputer = GetObject(strADsPath)
- varDisplay = objComputer.Get("attrxyz")
- MsgBox varDisplay,0,WSObjekt
Lasse ich die vier Anmeldezeilen weg, funktioniert das Script wie oben beschrieben, aber mit diesen Zeilen bekomme ich das Script einfach nicht zum Laufen. Es erscheint jedesmal nur eine leere MsgBox, Wenn ich die Zeile "On Error Resume Next" weglasse, kommt die Fehlermeldung:
---------------------------
Windows Script Host
---------------------------
Skript: C:\Users\Uxxxxxx\Documents\Get.vbs
Zeile: 29
Zeichen: 1
Fehler: Die Verzeichniseigenschaft wurden nicht im Cache gefunden.
Code: 8000500D
Quelle: Active Directory
---------------------------
OK
---------------------------
Also in der Zeile "varDisplay = objComputer.Get("attrxyz")", bei der Abfrage des Attributes, bricht er ab. Ich habe in den Anmeldezeilen schon alle möglichen Varianten probiert, Username mit und ohne Domain, in der Form Uxxxxxx@xxx.yyy.de, als Distinguished Name, mit und ohne Encryption und mit den ADSI-Flags 1, 2 und 3, nichts funktioniert.
Kann mir hier bitte jemand helfen und mir sagen, ob und was da falsch ist oder vielleicht noch fehlt???
Vielen Dank!
VG
Frank
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „FraWag“ ()