runner-ralf
Goto Top

LDAP Mitglied von(Member of) auslesen

Hallo alle zusammen,

ich komme einfach nicht zurecht. Habe schon ein paar Beispiele von http://www.selfadsi.de ausprobiert.
Ich will nach Eingabe von einem PC Namen alle Einträge die unter Mitglied von stehen auslesen.

Ich kann alle Computer einer OU auslesen aber ich bekomme es nicht hin den Reiter Mitglied von auszulesen.

Könnt ihr mir den unten stehenden Code um die Zeilen erweitern?

Nur in einer Msgbox ausgeben oder so.

ich werden den Code dann so anpassen dass das Eergebnis in einer HTML Seite angezeigt wird...


Set oWSH = CreateObject("WScript.Shell")
computer = "PC-TE_FF_112"
Set objComputer = GetObject ("LDAP://CN=computer,OU=CAD,DC=Meine_F,DC=net")


Viele Grüße und vielen Dank

Ralf

Content-ID: 201546

Url: https://administrator.de/contentid/201546

Ausgedruckt am: 23.11.2024 um 05:11 Uhr

bastla
bastla 11.02.2013 aktualisiert um 11:47:58 Uhr
Goto Top
Hallo runner-ralf!

Versuch es so:
Set oWSH = CreateObject("WScript.Shell")  
computer = "PC-TE_FF_112"  
Set objComputer = GetObject("LDAP://CN=" & computer & ",OU=CAD,DC=Meine_F,DC=net")  

On Error Resume Next
objMemberOf = objComputer.GetEx("memberOf")  
On Error Goto 0

If IsArray(objMemberOf) Then
    For Each sMembership In objMemberOf
        sAllMemberships = sAllMemberships & ";"& sMembership  
    Next
    WScript.Echo Mid(sAllMemberships, 2)
Else
    WScript.Echo "Keine Mitgliedschaften gefunden!"  
End If
Anmerkung: Solltest Du die Mitgliedschaft bei den "Domänencomputern" prüfen wollen, kannst du abfragen, ob die "objComputer.primaryGroupID" den Wert 515 hat.

Grüße
bastla
runner-ralf
runner-ralf 11.02.2013 um 12:30:18 Uhr
Goto Top
Servus bastla,

das sieht schon fast sehr gut aus.
Bekam zuerst mal nur eine Fehlermeldung aus die Zeile 3.
Kein Objekt gefunden....

Habe dann festgestellt dass das Script nur funktioniert wenn ich die gesamte OU Struktur bis zum Computerobjekt angebe.

Das habe ich versgessen zu erwähnen. Es gibt meistens immer noch 1 -5 weiter OU's bis zum entsprechenden Computer.

Ich hätte gerne das dieses Script ab der OU CAD recursiv weiter sucht bis er den Computer gefunden hat...

Kannst du das noch so weit modifizieren?

Einen schönen Gruß

Ralf
bastla
bastla 11.02.2013 um 14:42:57 Uhr
Goto Top
Hallo runner-ralf!

Soferne das Script für den aktuellen Computer ausgeführt werden soll, könntest Du einfach die Zeilen 2 und 3 durch
Set objComputer = GetObject("LDAP://" & CreateObject("ADSystemInfo").ComputerName)
ersetzen.

Falls Du aber tatsächlich nur aufgrund eines (eingegebenen) Namens in den Tiefen Deiner OU-Struktur suchen musst: Was die "Scripting Guys" für einen Benutzernamen vorgeturnt haben, solltest Du auch für einen Computernamen hinbekommen ...

Grüße
bastla
runner-ralf
runner-ralf 12.02.2013, aktualisiert am 19.02.2013 um 09:42:17 Uhr
Goto Top
Hallo Bastla,

vielen dank für deine Hilfe. habe es jetzt hingebastelt.
Anbei noch der vollständige Code:

Danke dir nochmal....

PC_Name = "PC-TE_FF_112"  
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")  
Set objCommand = CreateObject("ADODB.Command")  
objConnection.Provider = "ADsDSOObject"  
objConnection.Open "Active Directory Provider"  
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select memberof, name from " & _   
"'LDAP://OU=CAD,DC=Meine_F,DC=net' where objectClass='computer'and name='" & PC_Name & "'"  
objCommand.Properties("Page Size") = 1000  
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE  
Set objRecordSet = objCommand.Execute
If objRecordSet.EOF Then
	Manager = "Computer nicht gefunden"  
	Else
	objRecordSet.MoveFirst
	Mitglied = objRecordSet.Fields("memberof").Value   
	if isempty(Mitglied) <> true then
		For Each sMembership In Mitglied
			sAllMemberships = sAllMemberships & ";"& sMembership  
		Next
		msgbox sAllMemberships
		else
		msgbox("Keine Einträge unter 'Mitglied von' gefunden")  
	end if
		
End If

[Edit Biber] Codeformatierung. [/Edit]