LDAP-Abfrage gezielt

Dieses kleine Script fragt das AD nach zugewiesener Software ab.

... Eigentlich sucht es nur nach dem in der Inputbox angegebenen String, jedoch ist für jedes zugewiesene SW-Paket natürlich auch der Name des Paketes im AD hinterlegt (Zumindest ist er es in der momentanen Kundensituation. Von daher nur eingeschränkt nutzbar, bzw. für den Einsatz muss es noch angepasst werden.)

Genauso kann man auch Gruppen, OUs oder anderes lokalisieren.
Dieses Script ist für eine gezielte LDAP-Abfrage sehr nützlich.

Die Ausgabe erfolgt in eine Datei c:\abfrage.txt .

'==========================================================================
' Gobale Variable
' LDAP Name des Objectes in dem gesucht wird
'==========================================================================
Const ForReading = 1, ForWriting = 2, ForAppending = 8
strName = "*"

'==========================================================================
' Ergebniss Datei
'==========================================================================
Set fs = CreateObject("Scripting.FileSystemObject")
Set srcpath = fs.getfolder("\shvap022\d$\RADIADB\PRIMARY\SOFTWARE\ZSERVICE") 'Muss angepasst werden
Set datei = fs.OpenTextfile("C:\abfrage.txt",8,true)
datei.WriteLine "name; class; adspath"


'For Each i In srcpath.Files
'datei.WriteLine""
'datei.WriteLine""

'dummy = Split(i, "")
'test=UBound (dummy)
'WScript.Echo test
'wscript.echo dummy
'strSucheString = dummy(test)

'datei.WriteLine strSucheString

'==========================================================================
' Ask OU
'==========================================================================
strCategory = "organizationalUnit"
strSucheString = InputBox( "Radia suche", "Radia Pol suche")
str1 = getItem(strName,strCategory,strSucheString)

'==========================================================================
' Ask Group
'==========================================================================
strCategory = "group"
'WScript.Echo "Gruppe: "
str1 = getItem(strName,strCategory,strSucheString)

'==========================================================================
' Ask Computer
'==========================================================================
'strCategory = "computer"
'WScript.Echo "Computer: "
'str1 = getItem(strName,strCategory,strSucheString)

'next

'==========================================================================
' Function
'==========================================================================
Function getItem(ItemNamen,ItemCategory,ItemInGroup)
on error resume Next

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")

objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection

'Hier den LDAP-Pfad anpassen

objCommand.CommandText = _
"<LDAP://dc=intra,dc=ring-netz,dc=de>;" & _
"(&(objectCategory=" & ItemCategory & ")(name=" & ItemNamen & "));" & _
"ADsPath;subtree"

Set objRecordSet = objCommand.Execute

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 300
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

While Not objRecordSet.EOF
strADsPath = objRecordSet.Fields("ADsPath")
'Zeigt dem LDAP Path an
'WScript.Echo strADsPath
objRecordSet.MoveNext
'Auslesen der MultiBox
strmemberOf = ""
Item = ""
Set objItem = GetObject(strADsPath)
strmemberOf = objItem.GetEx("edmPolicy")
For Each Item in strmemberOf
strcheck = "0"
strcheck = InStr( 1,Item,strSucheString,vbtextcompare)
If strcheck > "0" Then
datei.WriteLine Item & "; " & ItemCategory & "; " & strADsPath
End if
Next
Wend
End Function

'kopie=fs.copyfile (datei, "c:audit_"&strSucheString&".txt")
wscript.echo "LDAP-Abfrage hat Fertig!!!"

  • Donnerstag, 15 März 2018

Leave a comment

You are commenting as guest.