Word VBA Attribute eines nicht angemeldeten Users aus dem AD lesen
Hallo Admins,
ich habe eine Frage, kann man via VBA (WORD 2003) die Attribute (Firma, Telefonnummer, Email, Fax.....) eines Users, der nicht der angemeldete User ist, aus dem AD auslesen?
die Werte des angemeldeten Users habe ich schon gefunden.
Aber bekomme ich die anderen auch?
Vielen Dank für Eure Hilfe.
ich habe eine Frage, kann man via VBA (WORD 2003) die Attribute (Firma, Telefonnummer, Email, Fax.....) eines Users, der nicht der angemeldete User ist, aus dem AD auslesen?
die Werte des angemeldeten Users habe ich schon gefunden.
Aber bekomme ich die anderen auch?
Vielen Dank für Eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 220213
Url: https://administrator.de/contentid/220213
Ausgedruckt am: 20.11.2024 um 15:11 Uhr
9 Kommentare
Neuester Kommentar
Beispiel:
(Zeile 1 an dein Umgebung anpassen, in Zeile 2 den Login-Namen des Accounts angeben den du abfragen möchtest)Die eigentliche Abfrage der AD-Eigenschaften nimmst du dann ab Zeile 31 vor.
Der User der das Script aufruft muss natürlich die entsprechenden Rechte auf dem AD-Objekt haben das er abruft. Diese kannst du z.B. mit ADSIEdit auf dem Server entsprechend setzen. Oder das Script mit "RunAs" und einem entsprechendem User der diese Rechte hat, starten.
StartNode = "cn=Users,dc=fabrikam,dc=com"
strAccount = "HMustermann"
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
SearchScope = "subtree"
FilterString = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=" & strAccount & "))"
Attributes = "adspath"
LDAPQuery = "<LDAP://" & StartNode & ">;" & FilterString & ";" _
& Attributes & ";" & SearchScope
objCommand.CommandText = LDAPQuery
objCommand.Properties("Page Size") = 1500
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
If not objRecordSet.eof then
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strUserPath = objRecordSet.Fields("ADsPath").Value
Set objUser = GetObject(strUserPath)
'-------get attributes -----------
msgbox objUser.displayName
'--------------------------------------
objRecordSet.MoveNext
Loop
End If
objRecordset.Close
objConnection.Close
msgbox "Fertig"
Ja, dies lässt sich im AD sehr fein einstellen, bis auf Property-Ebene. Setz die entsrpechenden zusätzlichen Rechte nur für die benötigten Properties der AD-Objekte und gut is, dann musst du dein Script nicht als Admin oder anderer User starten..(dein Freund hierfür ADSIEdit]
Grüße Uwe
Das mit dem RunAs funktioniert doch nur, wenn ich ein Windows Skript (vbs, vb oder cmd) aufrufe - oder? kann man so etwas auch in
VBA machen?
http://blogs.office.com/b/microsoft-access/archive/2009/11/11/running-a ...VBA machen?
Grüße Uwe