Autor Thema: LDAP Domino Directory Powershell  (Gelesen 12078 mal)

Offline stephanr

  • Frischling
  • *
  • Beiträge: 5
LDAP Domino Directory Powershell
« am: 11.12.12 - 09:13:40 »
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

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

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!

Offline stephanr

  • Frischling
  • *
  • Beiträge: 5
Re: LDAP Domino Directory Powershell
« Antwort #1 am: 27.12.12 - 14:37:44 »
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
}

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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz