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:
$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:
$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!