none
"Й" и LDAP фильтр RRS feed

  • Вопрос

  • Приветствую!

    Есть LDAP фильтр:

    $ldapFilter = "(&(objectclass=user)(objectcategory=person)(!(useraccountcontrol:1.2.840.113556.1.4.803:=2))(|(company=*пйп*)(company=*pip*)))"
    
     

    Под фильтр попадают, и "*пип*", и *пйп*.

    Вопрос: почему и как избежать?

    Пробовал через get-aduser и [adsisearcher]. Одинаково.

    Если передавать на where-object и фильтровать там, то все корректно. Но это увеличивает время выполнения.

    14 июля 2016 г. 11:42

Ответы

  • Избежать никак, только сторонний фильтр, в ldap фильтрах E\Ё и И\Й ищутся ,как один символ.

    http://www.utf8-chartable.de/unicode-utf8-table.pl в таблице много различных кодов для отображения й, единственный символ, который подпадает под фильтр и похож на й, но что будет с другим ПО и понравится ли внешний вид, большой вопрос. Подобное сравнение используется и в MySql - http://collation-charts.org/mysql60/mysql604.utf8_unicode_ci.european.html

    U+048B ҋ d2 8b CYRILLIC SMALL LETTER SHORT I WITH TAIL
     
    $z=$x[0..3] + 0xd2,0x8b + $x[-2..-1]
    Set-ADuser gus -company ([text.encoding]::utf8.GetString($z))
    Get-ADuser -Filter "Company -eq 'Ап\d2\8aп'"


    • Изменено KazunEditor 14 июля 2016 г. 14:09
    • Помечено в качестве ответа deep-inside 14 июля 2016 г. 14:39
    14 июля 2016 г. 14:06
    Отвечающий