Verwandte Beiträge
- REG-DWORD-Wert aus Registry auslesen und mittels IF-Abfrage prüfen? (5)
- Wie Import Globale Adresssliste aus ADS in das persönliche Adressbuch von Outlook (4)
- Per PHP direkt Daten aus ADS Datenbank auslesen (9)
- Acrobat versions nummer aus Registry auslesen (22)
- Zeile aus Datei auslesen und diese dann umbenennen (7)
- PcName aus AD auslesen in Zusammenhang mit dem PCNamen (4)
- Variablen mit Visual Basic aus Textdatei auslesen (9)
- IP-Adresse aus Excel auslesen und Netzwerkdrucker installieren (10)
- Unbekannte Zahl aus String auslesen (5)
- Mit bat Datei Install Pfad aus Registry auslesen un verwenden (1)
- Japanische Zeichen aus Datenbank auslesen (1)
- Bestimmte Zeilen aus Batch auslesen? (1)
- Inhalt aus Textdatei auslesen und pro Zeile Befehl ausführen (4)
- Per for Schleife Dateipfade mit Leerzeichen aus Textdatei auslesen (16)
- Server aus AD auslesen und verarbeiten VBS (17)
- Wert aus Excel auslesen und der Dateiinfo hinzufügen (8)
- Kundennamen und Ort aus Verzeichnissnamen auslesen (20)
- bestimmten Text per Batch aus txt auslesen (4)
- Kopieren eines Ordners auf bestimmte Rechner - Namen der Rechner aus Datei auslesen (4)
- mehr >>
Frage im Bereich
Wie kann ich FullName bzw First und Lastname aus dem ADS auslesen?
Geschrieben von fraggle666 am 2008/02/18 um 13:36:19 Uhr, 3 Antworten, 1815 Aufrufe, Status: gelöst
Hallo zusammen,
ich versuche gerade mittels eines VB Scriptes und einer Textdatei, die mit User ID´s gefüttert ist, die Namen auszulesen.
Bisher bekomme ich folgende Werte:
-----------------------------------------------------------------------------------------------------------------
UserID: Testuser (Testuser = der Login Name)
UserName:
Users Distinguished Name: CN=Testuser,OU=Users,OU=DE,DC=test,DC=test,DC=test
Users HomeDrive: H:
Users HomeDirectory: \\server\Home$\Testuser
Users TSRProfilePath: \\server.test.test.test\Profile$\Testuser\Profile.tsr
-----------------------------------------------------------------------------------------------------------------
Und der Vor- und Nachname soll nun mit ausgegeben werden.
Vorname = Pferde
Nachname = Apfel
Hier das Script:
On Error Resume Next
strLogTimeStamp = mid(date(),7 ,4) & mid(date(), 4, 2) & mid(date(), 1, 2) & "_" & mid(time(), 1, 2) & mid(time(), 4, 2) & mid(time(), 7, 2)
strProgName = "Test1"
strLogPfad = "C:\Temp\" & strProgName
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set fs = CreateObject("Scripting.FileSystemObject")
Set objTextFile = fs.OpenTextFile("C:\temp\lala.txt", ForReading)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Log-Datei vorbereiten WScript.Echo "Username : " objuser.displayname
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
if not fs.FolderExists("L:\LOGS") then
fs.CreateFolder "L:\LOGS"
End if
If not fs.FolderExists(strLogPfad) then
fs.CreateFolder strLogPfad
End if
Set strLogDatei = fs.OpenTextFile(strLogPfad & "\Uebersicht_" & strLogTimeStamp & ".txt", ForWriting, True)
Set strHomeDrvFile = fs.OpenTextFile(strLogPfad & "\HomeDriveFehlt_" & strLogTimeStamp & ".txt", ForWriting, True)
Set strHomeDirFile = fs.OpenTextFile(strLogPfad & "\HomeDirFehlt_" & strLogTimeStamp & ".txt", ForWriting, True)
Set strTSRProf = fs.OpenTextFile(strLogPfad & "\TSRProfielFehlt_" & strLogTimeStamp & ".txt", ForWriting, True)
C = 0
D = 0
E = 0
F = 0
Do While objTextFile.AtEndOfStream <> True Or C = 10
strName = objTextFile.ReadLine
displayname = objuser.displayname
usrdistinguished = getdistinguishedname()
strLogDatei.Writeline "--------------------------------------------"
strLogDatei.Writeline "UserID: " & strName
strLogDatei.Writeline "UserName: " & displayname
strLogDatei.Writeline "Users Distinguished Name: " & usrdistinguished
Set objUser = GetObject("LDAP://" & usrdistinguished)
objUser.GetInfo
strHomeDirectory = objUser.Get("homeDirectory")
strHomeDrive = objUser.Get("homeDrive")
strTSRProfPath = objUser.TerminalServicesProfilePath
' If strHomeDrive <> "" Then
' strLogDatei.Writeline "Users HomeDrive: " & strHomeDrive
' D = D + 1
' Else
' strHomeDrvFile.Writeline "Dieser User hat kein HomeDrive: " & strName & " - " & usrdistinguished
' End If
' If strHomeDirectory <> "" Then
' strLogDatei.Writeline "Users HomeDirectory: " & strHomeDirectory
' E = E + 1
' Else
' strHomeDirFile.Writeline "Dieser User hat kein HomeDirectory: " & strName & " - " & usrdistinguished
' End If
' If strTSRProfPath <> "" Then
' strLogDatei.Writeline "Users TSRProfilePath: " & strTSRProfPath
' F = F + 1
' Else
' strTSRProf.Writeline "Dieser User hat kein TSRProfilePath: " & strName & " - " & usrdistinguished
' End If
C = C + 1
Loop
strLogDatei.Writeline "Anzahl der Userobjecte = " & c
strLogDatei.Writeline "Anzahl der HomeDrives = " & d
strLogDatei.Writeline "Anzahl der HomeDirectorys = " & e
'
'
' Function to get distinguished name of user logged on
'
'
' ReturnValue - distinguished name
'
function getdistinguishedname()
' On Error Resume Next
Dim X
Dim Con
Dim oCommand
Dim objArgs
Dim ADsObject
Dim sADsPath
Dim objName
Dim objClass
Dim objSchema
Dim classObject
Set X = createobject("WSCRIPT.Network")
'strName=x.username
Set Con = CreateObject("ADODB.Connection")
Con.Provider = "ADsDSOObject"
Con.Open "Active Directory Provider"
Set oCommand = CreateObject("ADODB.Command")
oCommand.ActiveConnection = Con
Set objRootDSE = GetObject("LDAP://rootDSE")
sDomain = objRootDSE.Get("defaultNamingContext")
Set domain = GetObject("GC://" & sDomain)
sADsPath = "<" & domain.ADsPath & ">"
sFilter = "(&(objectCategory=person)(objectClass=user)(Name=" & strName & "))"
sAttribsToReturn = "distinguishedName"
sDepth = "subtree"
oCommand.CommandText = sADsPath & ";" & sFilter & ";" & _
sAttribsToReturn & ";" & sDepth
Set rs = oCommand.Execute
rs.MoveFirst
While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
If rs.Fields(i).Name = "distinguishedName" Then
distinguishedPath = rs.Fields(i).Value
End If
Next
rs.MoveNext
Wend
'Quit if nothing is found
If rs.RecordCount = 0 Then
WScript.Quit
End If
getdistinguishedname = distinguishedPath
end function
Das Problem ist, es handelt sich dabei um ein vorgeschriebenes Script meines Vorgängers, dass ich nun anpassen soll.
Ich habe bis dato noch nie etwas mit VB zu tun gehabt, und versuche dieses Script zu verstehen...
Könnt ihr mir helfen? :/
Danke euch
ich versuche gerade mittels eines VB Scriptes und einer Textdatei, die mit User ID´s gefüttert ist, die Namen auszulesen.
Bisher bekomme ich folgende Werte:
-----------------------------------------------------------------------------------------------------------------
UserID: Testuser (Testuser = der Login Name)
UserName:
Users Distinguished Name: CN=Testuser,OU=Users,OU=DE,DC=test,DC=test,DC=test
Users HomeDrive: H:
Users HomeDirectory: \\server\Home$\Testuser
Users TSRProfilePath: \\server.test.test.test\Profile$\Testuser\Profile.tsr
-----------------------------------------------------------------------------------------------------------------
Und der Vor- und Nachname soll nun mit ausgegeben werden.
Vorname = Pferde
Nachname = Apfel
Hier das Script:
On Error Resume Next
strLogTimeStamp = mid(date(),7 ,4) & mid(date(), 4, 2) & mid(date(), 1, 2) & "_" & mid(time(), 1, 2) & mid(time(), 4, 2) & mid(time(), 7, 2)
strProgName = "Test1"
strLogPfad = "C:\Temp\" & strProgName
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set fs = CreateObject("Scripting.FileSystemObject")
Set objTextFile = fs.OpenTextFile("C:\temp\lala.txt", ForReading)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Log-Datei vorbereiten WScript.Echo "Username : " objuser.displayname
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
if not fs.FolderExists("L:\LOGS") then
fs.CreateFolder "L:\LOGS"
End if
If not fs.FolderExists(strLogPfad) then
fs.CreateFolder strLogPfad
End if
Set strLogDatei = fs.OpenTextFile(strLogPfad & "\Uebersicht_" & strLogTimeStamp & ".txt", ForWriting, True)
Set strHomeDrvFile = fs.OpenTextFile(strLogPfad & "\HomeDriveFehlt_" & strLogTimeStamp & ".txt", ForWriting, True)
Set strHomeDirFile = fs.OpenTextFile(strLogPfad & "\HomeDirFehlt_" & strLogTimeStamp & ".txt", ForWriting, True)
Set strTSRProf = fs.OpenTextFile(strLogPfad & "\TSRProfielFehlt_" & strLogTimeStamp & ".txt", ForWriting, True)
C = 0
D = 0
E = 0
F = 0
Do While objTextFile.AtEndOfStream <> True Or C = 10
strName = objTextFile.ReadLine
displayname = objuser.displayname
usrdistinguished = getdistinguishedname()
strLogDatei.Writeline "--------------------------------------------"
strLogDatei.Writeline "UserID: " & strName
strLogDatei.Writeline "UserName: " & displayname
strLogDatei.Writeline "Users Distinguished Name: " & usrdistinguished
Set objUser = GetObject("LDAP://" & usrdistinguished)
objUser.GetInfo
strHomeDirectory = objUser.Get("homeDirectory")
strHomeDrive = objUser.Get("homeDrive")
strTSRProfPath = objUser.TerminalServicesProfilePath
' If strHomeDrive <> "" Then
' strLogDatei.Writeline "Users HomeDrive: " & strHomeDrive
' D = D + 1
' Else
' strHomeDrvFile.Writeline "Dieser User hat kein HomeDrive: " & strName & " - " & usrdistinguished
' End If
' If strHomeDirectory <> "" Then
' strLogDatei.Writeline "Users HomeDirectory: " & strHomeDirectory
' E = E + 1
' Else
' strHomeDirFile.Writeline "Dieser User hat kein HomeDirectory: " & strName & " - " & usrdistinguished
' End If
' If strTSRProfPath <> "" Then
' strLogDatei.Writeline "Users TSRProfilePath: " & strTSRProfPath
' F = F + 1
' Else
' strTSRProf.Writeline "Dieser User hat kein TSRProfilePath: " & strName & " - " & usrdistinguished
' End If
C = C + 1
Loop
strLogDatei.Writeline "Anzahl der Userobjecte = " & c
strLogDatei.Writeline "Anzahl der HomeDrives = " & d
strLogDatei.Writeline "Anzahl der HomeDirectorys = " & e
'
'
' Function to get distinguished name of user logged on
'
'
' ReturnValue - distinguished name
'
function getdistinguishedname()
' On Error Resume Next
Dim X
Dim Con
Dim oCommand
Dim objArgs
Dim ADsObject
Dim sADsPath
Dim objName
Dim objClass
Dim objSchema
Dim classObject
Set X = createobject("WSCRIPT.Network")
'strName=x.username
Set Con = CreateObject("ADODB.Connection")
Con.Provider = "ADsDSOObject"
Con.Open "Active Directory Provider"
Set oCommand = CreateObject("ADODB.Command")
oCommand.ActiveConnection = Con
Set objRootDSE = GetObject("LDAP://rootDSE")
sDomain = objRootDSE.Get("defaultNamingContext")
Set domain = GetObject("GC://" & sDomain)
sADsPath = "<" & domain.ADsPath & ">"
sFilter = "(&(objectCategory=person)(objectClass=user)(Name=" & strName & "))"
sAttribsToReturn = "distinguishedName"
sDepth = "subtree"
oCommand.CommandText = sADsPath & ";" & sFilter & ";" & _
sAttribsToReturn & ";" & sDepth
Set rs = oCommand.Execute
rs.MoveFirst
While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
If rs.Fields(i).Name = "distinguishedName" Then
distinguishedPath = rs.Fields(i).Value
End If
Next
rs.MoveNext
Wend
'Quit if nothing is found
If rs.RecordCount = 0 Then
WScript.Quit
End If
getdistinguishedname = distinguishedPath
end function
Das Problem ist, es handelt sich dabei um ein vorgeschriebenes Script meines Vorgängers, dass ich nun anpassen soll.
Ich habe bis dato noch nie etwas mit VB zu tun gehabt, und versuche dieses Script zu verstehen...
Könnt ihr mir helfen? :/
Danke euch
Veröffentlichen Sie diesen Beitrag in Ihrem sozialen Netzwerk
3 Antworten
2
fraggle666 schreibt am 2008/02/19 um 11:42:46 Uhr
nunja,
nächstes Problem. Wie kann ich nun "alle" User Daten mittels VBS aus dem ADS auslesen?
Im vorher geschilderten Problem hatte ich ja eine Textdatei mit Usern, die ich nur mit den ADS Daten abgleichen wollte.
Ich war schon hier:
http://www.activexperts.com/activmonitor/ ...
Aber irgendwie bekomm ich das trotzdem nicht hin. Mit diesen Scripts, wird ja, wenn ichs richtig verstanden habe, nur jeweils ein User abgefragt.
Zu Hülf!
nächstes Problem. Wie kann ich nun "alle" User Daten mittels VBS aus dem ADS auslesen?
Im vorher geschilderten Problem hatte ich ja eine Textdatei mit Usern, die ich nur mit den ADS Daten abgleichen wollte.
Ich war schon hier:
http://www.activexperts.com/activmonitor/ ...
Aber irgendwie bekomm ich das trotzdem nicht hin. Mit diesen Scripts, wird ja, wenn ichs richtig verstanden habe, nur jeweils ein User abgefragt.
Zu Hülf!
3
fraggle666 schreibt am 2008/02/22 um 10:35:20 Uhr
Eine vbs Datei erstellen und in einem cmd Fenster mit cscript "ads.vbs" > K:\test.txt starten :
Set ou = GetObject("LDAP://OU="Zielfolder",OU="Übergeordneter Folder",DC="Domain",DC="de"")
For Each obj In ou
wscript.echo obj.name
Next
Das wars
Set ou = GetObject("LDAP://OU="Zielfolder",OU="Übergeordneter Folder",DC="Domain",DC="de"")
For Each obj In ou
wscript.echo obj.name
Next
Das wars





strName = objTextFile.ReadLine
usrdistinguished = getdistinguishedname()
displayname = objuser.displayname
strLogDatei.Writeline "--------------------------------------------"
strLogDatei.Writeline "UserID: " & strName
strLogDatei.Writeline "UserName: " & displayname
strLogDatei.Writeline "Users Distinguished Name: " & usrdistinguished
Set objUser = GetObject("LDAP://" & usrdistinguished)
objUser.GetInfo
strHomeDirectory = objUser.Get("homeDirectory")
strHomeDrive = objUser.Get("homeDrive")
strTSRProfPath = objUser.TerminalServicesProfilePath
Soweit bin ich nun. Allerdings kopiert er mir nun immer den Display Name, des nachfolgenden Benutzers in die aktuelle Zeile...
Sehr mysteriös