Jump to content

LDAP-Search


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hey Leute!

 

Ich habn kleines Problem und bin schon seit gut 2 Tagen auf der suche nach der Lösung... und zwar geht es um eine LDAP-Abfrage die als Input eine Workstation-Nr und als Output den LDAP-Name leifern soll. Das Script sollte jedoch die ganze Domain durchsuchen, da die Workstation auf verschiedene OU's verteilt sind.

 

Bis anhin konnte ich ein Scriptchen entwerfen, dass den LDAP-Name einer spezifischen OU ausspuckte:

 

str_ws_id = inputbox ("WS-ID: ")

 

set obj_workstation = GetObject("LDAP://CN=" & ws_id & ",OU=Desktops,OU=CH,DC=home,DC=net")

str_output = obj_workstation.get("distinguishedName")

 

MsgBox str_output

 

Könnt ihr mir helfen? thx 4 helping.

 

Gruss

!-Butterbrot-!

Link zu diesem Kommentar

Na, ein bischen Zeit must Du Dir schon nehmen!

Von andern abschreiben ist übrigens wesentlich weniger lehrreich als selber aktiv werden ;)

 

MSPress hat übrigens gute Titel zu Scripting im Programm. Das eine Buch ist "Scripting für Administratoren", das andere "Inside Scripting Host". Ich verwende die beiden regelmässig, als Referenzen, nebst dem Technet-Scriptcenter.

 

Eine andere gute Ressource ist:

http://www.activevb.de/startseite/index.html

Link zu diesem Kommentar

nun hab ich mich mal durch einige samplescripts durchgearbeitet.. mein jetztiges Script kann schon mal alle OUs der ersten hierarchischen Stufe ausgeben.

 


set objRoot = GetObject("LDAP://rootDSE")
strDomain = objRoot.Get("DefaultNamingContext")
set objDom = getObject("LDAP://" & strDomain)

objDom.Filter = array("organizationalUnit")

for each objOU in objDom
strOU = strOU & ";" & objOU.distinguishedName
WScript.Echo objOU.distinguishedName
next
[/Code]

 

Wie kann ich nun von jeder OU aus in die nächst tiefere Stufe switchen? Auf welchen Parameter müssen sich die "Foreach"-Schlaufen beziehen? thx :)

 

Gruess

!-Butterbrot-!

Link zu diesem Kommentar

ich meinte eigentlich die verschachtelten OUs.. aber das hab ich nun hin gekriegt.

 


Set objRootDSE = GetObject("LDAP://RootDSE")
Set objDomain = GetObject("LDAP://" & objRootDSE.Get("DefaultNamingContext"))

Call BrowseOU(objDomain.ADsPath)

Sub BrowseOU(sADsPath)

Set objContainer = GetObject(sADsPath)
objContainer.Filter = Array("OrganizationalUnit")

For Each objOU in objContainer

strpfad = objOU.get("distinguishedName")
WScript.Echo strpfad

BrowseOU(objOU.ADsPath)
Next
End Sub
[/Code]

Wie kann ich nun die dort enthaltenen WS ausgeben?

Link zu diesem Kommentar

Hi

Probiers mal hiermit aus dem Scripting Guide

----

Set objConnection = CreateObject("ADODB.Connection")

objConnection.Open "Provider=ADsDSOObject;"

 

Set objCommand = CreateObject("ADODB.Command")

objCommand.ActiveConnection = objConnection

 

objCommand.CommandText = _

"<LDAP://dc=NA,dc=fabrikam,dc=com>;(objectCategory=computer)" & _

";distinguishedName,name;subtree"

 

Set objRecordSet = objCommand.Execute

 

While Not objRecordSet.EOF

Wscript.Echo objRecordSet.Fields("Name")

Wscript.Echo "[" & _

objRecordSet.Fields("distinguishedName") & "]"

objRecordSet.MoveNext

Wend

 

objConnection.Close

----

 

musst halt den Domainnamen noch anpassen und in die While Schleife eine If-Abfrage nach deinem Workstationnamen einbauen.

Wenn du mehr als 1000 Rechner in deiner Domäne hast, sag nochmal Bescheid. Dann brauchst du noch einen Befehl

 

cu

blub

Link zu diesem Kommentar

Wscript.StdOut.Write "Workstationname eingeben: "

strwkst = Wscript.StdIn.ReadLine

 

.

.

 

While Not objRecordSet.EOF

if lcase(objRecordSet.Fields("Name")=lcase(strwkst) then

wscript. echo objRecordSet.Fields("Name") &vbtab& objRecordSet.Fields("distinguishedName")

exit while

Wend

 

Ich habs jetzt nicht ausprobiert, aber in etwa läufts so.

 

 

cu

blub

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...