AD auslesen und in Variable speichern (VBS und HTA)
Hallo zusammen,
ich benötige einen Script der zu einem angegebenen User ein AD-Attribut ausliest und dieses in einer Variable speichert.
Ich habe bereits mehrere Skripte gefunden, allerdings lesen diese immer nur den angemeldeten User aus.
Hat eventuell schon jemand ein passendes Skript? Vielleicht bin ich einfach nur blind bei der Suche.
Bitte wenn möglich in VBS da ich das Script in eine HTA einbauen will und mit der Variable weitermachen will.
Zweck des ganzen: Ich bastle gerade an einem Laufwerksmapper der den Loginscript (scriptPath) des eingetragenen Users ausführen soll.
Das ist nötig, da die User nicht mit Ihrem Account angemeldet sind.
Das HTA mit Eingabe Feld ist bereits schon fertig, nur fehlt mir die Möglichkeit an die Variable "Scriptpath" und "homeDirectory" zu kommen, um diese dann auszuführen bzw. zu Mappen.
Danke
Mit freundlichen Grüßen Rob
EDIT:
Habe einen Code gefunden, welcher allerdings nur die OU Users ausliest, vielleicht ist es nicht all zu schwer den umzubauen?
ich benötige einen Script der zu einem angegebenen User ein AD-Attribut ausliest und dieses in einer Variable speichert.
Ich habe bereits mehrere Skripte gefunden, allerdings lesen diese immer nur den angemeldeten User aus.
Hat eventuell schon jemand ein passendes Skript? Vielleicht bin ich einfach nur blind bei der Suche.
Bitte wenn möglich in VBS da ich das Script in eine HTA einbauen will und mit der Variable weitermachen will.
Zweck des ganzen: Ich bastle gerade an einem Laufwerksmapper der den Loginscript (scriptPath) des eingetragenen Users ausführen soll.
Das ist nötig, da die User nicht mit Ihrem Account angemeldet sind.
Das HTA mit Eingabe Feld ist bereits schon fertig, nur fehlt mir die Möglichkeit an die Variable "Scriptpath" und "homeDirectory" zu kommen, um diese dann auszuführen bzw. zu Mappen.
Danke
Mit freundlichen Grüßen Rob
EDIT:
Habe einen Code gefunden, welcher allerdings nur die OU Users ausliest, vielleicht ist es nicht all zu schwer den umzubauen?
' Öffnet eine Messagebox und frägt nach einem Usernamen
name = InputBox("Name des auszulesenden AD Kontos?")
Set objKonto = FindAccount(name)
Beschreibung = objkonto.description
' Öffnet eine Messagebox und gibt den Inhalt des Users (Feld Beschreibung) aus.
Msgbox Beschreibung
Function FindAccount(ByVal strName)
Set RootDSE = GetObject("LDAP://RootDSE")
path = "LDAP://" & RootDSE.get("DefaultNamingContext")
sql = "SELECT ADsPath FROM '" & path & "' WHERE objectClass='User' and name='" & strName & "'"
Set objconn = CreateObject("ADODB.Connection")
Set objcomm = CreateObject("ADODB.Command")
objconn.Provider = "ADsDSOObject"
objconn.open "Active Directory Provider"
Set objcomm.ActiveConnection = objconn
objcomm.CommandText = sql
objcomm.Properties("Page Size")=50
objcomm.Properties("Searchscope") = 2
Set rs = objcomm.Execute
If rs.eof Then
Set FindAccount = Nothing
Else
Set FindAccount = GetObject(rs("ADsPath"))
End If
End Function
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 254334
Url: https://administrator.de/forum/ad-auslesen-und-in-variable-speichern-vbs-und-hta-254334.html
Ausgedruckt am: 24.12.2024 um 03:12 Uhr
4 Kommentare
Neuester Kommentar
Moin,
irgendwie unklar was du vor hast.
User Hans meldet sich trotz AD nicht mit Hans an sondern mit User01?
Dann willst du was von Hans auslesen? Und dann das Laufwerk von Hans mappen?
Dir ist aber klar, dass es hier abgesehen von diversen NTFS Sicherheitseinstellungen die du bearbeiten musst damit das geht ein riesiges Datenschutzloch aufreißt?
Welcher Sinn steckt dahinter?
Wenns ein AD mit den Nutzern gibt sollen sie sich doch damit anmelden?
Grüße
irgendwie unklar was du vor hast.
User Hans meldet sich trotz AD nicht mit Hans an sondern mit User01?
Dann willst du was von Hans auslesen? Und dann das Laufwerk von Hans mappen?
Dir ist aber klar, dass es hier abgesehen von diversen NTFS Sicherheitseinstellungen die du bearbeiten musst damit das geht ein riesiges Datenschutzloch aufreißt?
Welcher Sinn steckt dahinter?
Wenns ein AD mit den Nutzern gibt sollen sie sich doch damit anmelden?
Grüße
Hallo Bob,
da gebe ich Xaero absolut recht, du müsstest die Rechte im AD so anpassen das jeder User die Attribute der anderen lesen darf.
Ansonsten geht das auslesen eines bestimmten Users z.B. so (ausreichende AD Rechte vorausgesetzt)
-edit- oder so
Grüße Uwe
da gebe ich Xaero absolut recht, du müsstest die Rechte im AD so anpassen das jeder User die Attribute der anderen lesen darf.
Ansonsten geht das auslesen eines bestimmten Users z.B. so (ausreichende AD Rechte vorausgesetzt)
Set objUser = GetObject("LDAP://cn=maxmuster,ou=management,dc=domain,dc=com")
Wscript.Echo "Profile Path: " & objUser.ProfilePath
Wscript.Echo "Script Path: " & objUser.ScriptPath
Wscript.Echo "Home Directory: " & objUser.HomeDirectory
Wscript.Echo "Home Drive: " & objUser.HomeDrive
strName = InputBox("Bitte Usernamen eingeben")
set objUser = FindAccount(strName)
if not objUser is nothing then
msgbox "HomeDirectory des Users: " & objUser.HomeDirectory
else
msgbox "Kein User mit diesem Loginnamen gefunden"
End if
Function FindAccount(strUserName)
On Error Resume Next
Dim adoCommand, adoConnection
Dim varBaseDN, varFilter
Dim objRootDSE, varDNSDomain, strQuery, adoRecordset
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
' Search entire Active Directory domain.
Set objRootDSE = GetObject("LDAP://RootDSE")
varDNSDomain = objRootDSE.Get("defaultNamingContext")
varBaseDN = "<LDAP://" & varDNSDomain & ">"
' Filter for user objects.
varFilter = "(&(objectCategory=person)(objectClass=user)(SamAccountName=" & strUserName & "))"
' Construct the LDAP syntax query.
adoCommand.CommandText = varBaseDN & ";" & varFilter & ";ADSPath;Subtree"
adoCommand.Properties("Page Size") = 2
adoCommand.Properties("Timeout") = 20
adoCommand.Properties("Cache Results") = False
Set adoRecordset = adoCommand.Execute
adoRecordset.MoveFirst
If adoRecordset.RecordCount > 0 Then
set FindAccount = GetObject(adoRecordset("ADSPath"))
else
set FindAccount = Nothing
End If
adoRecordset.Close
adoConnection.Close
End Function