Domino 9 und frühere Versionen > ND8: Administration & Userprobleme

LDAP Domino Directory Powershell

(1/1)

stephanr:
Hallo,

ich habe vor einiger Zeit ein Powershell Skript geschrieben, das es mir erlaubt die Telefonnummer eines Objektes per LDAP im DD zu lesen. Anbei der Quellcode:

--- Code: ---$tel = @()
$ldap1 = @()

function ldap {
        $user = "sre"
        $auth = [System.DirectoryServices.AuthenticationTypes]::Anonymous
        $Root = new-object system.directoryservices.directoryEntry ("LDAP://told01:389","","",$auth);
        $Filter = "(&(objectclass=dominoPerson)(uid=$user))"
        $Attribute = [b]"telephonenumber"[/b]
        $Searcher = New-Object Directoryservices.DirectorySearcher($Root)
        $searcher.Filter = $Filter
        $searcher.Searchscope = [System.DirectoryServices.SearchScope]::Subtree
        $Attribute | foreach {[void]$searcher.PropertiesToLoad.Add($_)}
        $result = $searcher.findAll()
        $tel = $result | %{$_.properties.item([b]"telephonenumber"[/b])}
        $tel.gettype()
        return $tel
        }
$abfrage = ldap
$abfrage.gettype()
echo $abfrage

IsPublic IsSerial Name                                     BaseType                                                                                                                                                               
-------- -------- ----                                     --------                                                                                                                                                               
True     True     Object[]                                 System.Array                                                                                                                                                           
True     True     String                                   System.Object                                                                                                                                                         
041XX-504-3476

--- Ende Code ---

Als Ausgabe erhalte ich die Telefonnummer als String (04XXX-504-3476)

Jetzt wollte ich weitere Attribute mit diesem Skript lesen, erhalte aber bei einigen Attributen keinen korrekten Rückgabewert. Als Beispiel sei das Attribut Department genannt:


--- Code: ---$tel = @()
$ldap1 = @()

function ldap {
        $user = "sre"
        $auth = [System.DirectoryServices.AuthenticationTypes]::Anonymous
        $Root = new-object system.directoryservices.directoryEntry ("LDAP://told01:389","","",$auth);
        $Filter = "(&(objectclass=dominoPerson)(uid=$user))"
        $Attribute = [b]"Department"[/b]
        $Searcher = New-Object Directoryservices.DirectorySearcher($Root)
        $searcher.Filter = $Filter
        $searcher.Searchscope = [System.DirectoryServices.SearchScope]::Subtree
        $Attribute | foreach {[void]$searcher.PropertiesToLoad.Add($_)}
        $result = $searcher.findAll()
        $tel = $result | %{$_.properties.item([b]"Department"[/b])}
        $tel.gettype()
        return $tel
        }
       
$abfrage = ldap
$abfrage.gettype()
echo $abfrage

IsPublic IsSerial Name                                     BaseType                                                                                                                                                               
-------- -------- ----                                     --------                                                                                                                                                               
True     True     Object[]                                 System.Array                                                                                                                                                           
True     True     Byte[]                                   System.Array                                                                                                                                                           
73
84
45
32
66
101
116
114
105
101
98

--- Ende Code ---

In diesem Fall erhalte ich leider keinen String, sondern ein Byte[] System.Array
Ich habe dann mal in der Domino LDAP Konfiguration nach einem Unterschied gesucht und tatsächlich folgenden gefunden. Attribute mit dem Schema "IETF RFC 2256; ITU-T Recommendation X.500 Directory" kann ich korrekt lesen. Das sind z. B. "CN", "givenName", "telephoneNumber". Andere Attribute (z. B. Department) haben das Schema "Lotus Domino Directory" und bei diesen erhalte ich die falsche Ausgabe. Hat eventuell jemand eine Idee, wie ich diese Attribute ebenfalls als String auslesen kann?

Vielen Dank!

stephanr:
Moin,

hab mir jetzt so beholfen:

--- Code: ---function get_ldap_firma ($user)
{
    $ldapsearch ="C:\Program Files (x86)\IBM\Lotus\Notes\ldapsearch.exe"
    $ldaphost ="told01"
    $ldapfilter = "(&(objectClass=dominoPerson)(uid=$user))"
    $attribut = "companyname"
    $value = & $LDAPSEARCH -h $LDAPHOST $ldapfilter $attribut
    $string = $value | select-string -Pattern companyname
    $string1 = $string.Line.Substring(12)
    return $string1
}

--- Ende Code ---

Wahrscheinlich hat die andere Funktion Probleme mit dem Domino Directory Schema und kann dieses nicht verarbeiten oder so...

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln