Attribut in der Active Directory auslesen

  • Hi Leute!

    Ich würde gerne das Attribut "Location" eines Drucker(-Objekts) auslesen.
    So sieht mein Script aus:

    Spoiler anzeigen
    [autoit]

    ; _ADGetObjectAttribute
    ; Retrieves the specified (single-value) attribute for the given SamAccountName
    ; Returns 0 if the object does not exist, the attribute does not exist for that
    ; object or if the value is multi-string.
    ; Otherwise returns the result

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Dim $objConnection
    Dim $strHostServer
    Dim $strDNSDomain
    $object = "PNMarketingC22PCL"
    $attribute = "Location"

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"klsda","Result: " & _ADGetObjectAttribute($object,$attribute))

    [/autoit] [autoit][/autoit] [autoit]

    Func _ADGetObjectAttribute($object, $attribute)
    If _ADObjectExists($object) = 0 Then Return 0

    [/autoit] [autoit][/autoit] [autoit]

    $strHostServer = "server27"
    $strDNSDomain = "CN=PVSVPS001"

    $strQuery = "<LDAP://" & $strHostServer & "/" & $strDNSDomain & ">;(sAMAccountName=" & $object & ");ADsPath;subtree"
    $objRecordSet = $objConnection.Execute ($strQuery) ; Retrieve the FQDN for the object
    $ldap_entry = $objRecordSet.fields (0).value
    $oObject = ObjGet($ldap_entry) ; Retrieve the COM Object for the object
    $result = $oObject.Get ($attribute)
    $oObject.PurgePropertyList
    $oObject = 0
    If $result = "" Then
    Return ""
    Else
    Return $result
    EndIf

    EndFunc ;==>_ADGetObjectAttribute

    [/autoit] [autoit][/autoit] [autoit]

    Func _ADObjectExists($object)
    $strQuery = "<LDAP://" & $strHostServer & "/" & $strDNSDomain & ">;(sAMAccountName=" & $object & ");ADsPath;subtree"
    $objRecordSet = $ObjConnection.Execute ($strQuery) ; Retrieve the FQDN for the group, if it exists

    If $objRecordSet.RecordCount = 1 Then
    $objRecordSet = 0
    Return 1
    Else
    $objRecordSet = 0
    Return 0
    EndIf
    EndFunc ;==>_ADObjectExists

    [/autoit]

    Wenn ich das starte, kriege ich anstelle einer Msgbox eine Fehlermeldung:

    Code
    H:\AutoIt\Printer\AD_read_prop.au3 (39) : ==> Variable must be of type "Object".: 
    $objRecordSet = $ObjConnection.Execute ($strQuery) 
    $objRecordSet = $ObjConnection^ ERROR


    Ich würde mich sehr über Hilfe freuen.

    Gruss
    Manu

  • Da ich manuell auf die AD zugreifen kann, versteh ich nicht, wieso keine Verbindung zustande kommen kann.
    Falls es daran liegt, kennst du die Lösung?

    Wozu brauch ich mehr Code?
    Ich will bloss, dass eine Msgbox mir die Location anzeigt.

  • Vielen Dank für die Hilfe.

    Leider habe ich mit AutoIt Help nicht rausfinden können, welchen ObjType ich angeben muss...
    So funktioniert es nicht:

    [autoit]

    $objConnection = ObjGet("MMCMainFrame","Active Directory.Application")

    [/autoit]

    EDIT:
    Ich hab keinen Plan was ich da reinschreiben muss...
    Das funzt auch nicht:

    [autoit]

    $objConnection = ObjGet("LDAP://" & $strHostServer & "/" & $strDNSDomain & "-" & $object)

    [/autoit]

    Einmal editiert, zuletzt von ManuIt (2. April 2008 um 12:25)

  • Omg... Da werd ich mich wohl lange durch dieses Fachchinesisch kämpfen müssen, bis ich versteh, was ich dort eingeben muss... 8|
    Danke trotzdem für deine Hilfe.