OpenLDAP-Query sortieren in der Powershell
Moin,
mit Hilfe der Powershell frage ich in einem OpenLDAP das ein oder andere ab. Das funktioniert auch wunderbar. Nur möchte ich gerne das Suchergebnis sortieren. Dazu habe ich bei Google Folgendes gefunden:
Gebe ich nun -sort beim Aufruf der Funktion an, dann bekomme ich:
Ohne den Parameter -sort läuft das Skript und macht genau das, was es soll. Ich hätte gerne die Möglichkeit, das Ergebnis nach einer bestimmten Eigenschaft zu sortieren. Wie?
Liebe Grüße
Erik
mit Hilfe der Powershell frage ich in einem OpenLDAP das ein oder andere ab. Das funktioniert auch wunderbar. Nur möchte ich gerne das Suchergebnis sortieren. Dazu habe ich bei Google Folgendes gefunden:
PARAM(
$query = "(&(objectclass=posixaccount))",
$root = "LDAP://192.168.xxx.xxx/dc=domain,dc=de",
$sort
)
$auth = [System.DirectoryServices.AuthenticationTypes]::Anonymous
$de = New-Object System.DirectoryServices.DirectoryEntry($root,$null,$null,$auth)
$search = New-Object system.DirectoryServices.DirectorySearcher($de,$query)
if($sort) {
$sorter = New-Object System.DirectoryServices.SortOption
$sorter.PropertyName = $sort
$search.sort = $sorter
}
$result = $search.FindAll()
Gebe ich nun -sort beim Aufruf der Funktion an, dann bekomme ich:
Exception calling "FindAll" with "0" argument(s): "Der Wert für die Sort-Eigenschaft kann nicht festgelegt werden."
At P:\ldap\get-userlist.ps1:45 char:5
+ $result = $search.FindAll()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) , MethodInvocationException
+ FullyQualifiedErrorId : InvalidOperationException
Ohne den Parameter -sort läuft das Skript und macht genau das, was es soll. Ich hätte gerne die Möglichkeit, das Ergebnis nach einer bestimmten Eigenschaft zu sortieren. Wie?
Liebe Grüße
Erik
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 387912
Url: https://administrator.de/forum/openldap-query-sortieren-in-der-powershell-387912.html
Ausgedruckt am: 26.03.2025 um 11:03 Uhr
14 Kommentare
Neuester Kommentar

$search.Sort = [System.DirectoryServices.SortOption]::new($sort,[System.DirectoryServices.SortDirection]::Ascending)

Hier gehts.

Zitat von @erikro:
Mit dem OpenLDAP oder dem MS AD-LDAP? Ich habe langsam den Verdacht, dass es am OpenLDAP liegt.
OpenLDAP.Zitat von @137289:
Hier gehts.
Hier gehts.
Mit dem OpenLDAP oder dem MS AD-LDAP? Ich habe langsam den Verdacht, dass es am OpenLDAP liegt.
Mach doch einfach ein Sort-Object in die Pipe, macht dir das selbe ...

Du musst natürlich die abzufragenden Eigenschaften im ADSISearcher angeben die du abfragen willst, sonst lüppt dat mit dem Sort ned.
https://docs.microsoft.com/en-us/dotnet/api/system.directoryservices.dir ...
https://docs.microsoft.com/en-us/dotnet/api/system.directoryservices.dir ...

es steht der richtige Wert drin.
Der nach deiner Meinung nach wäre?Mach da ein * rein. Die PS liefert bei einem empty string nicht das richtige, deswegen ein Sternchen rein setzen.

Das hier geht bspw. bei mir problemlos auf einen OpenLDAP abgefeuert
Wenns bei dir nicht lüppt k.A., dann machs einfach wie ich oben geschrieben haben einfach das Ergebnis durch Sort-Object pipen, performance technische macht das sowieso kaum einen Unterschied.
$domain = New-Object adsi("LDAP://X.X.X.X/dc=domain,dc=tld","USERNAME","PASSWORD")
$adsi = New-object adsisearcher($domain,"(cn=*)","*",[System.DirectoryServices.SearchScope]::Subtree)
$adsi.Sort.PropertyName = 'cn'
$adsi.Sort.Direction = 'Ascending'
$adsi.FindAll() | %{
$_.Properties['cn']
}