Войти

Показать полную графическую версию : [решено] Ldapquery - сравнение двух дат


dahiko
07-08-2023, 13:14
Всем привет!

Пытаюсь с помощью ldapquery выдернуть все учетные записи из ActiveDirectory с несколькими условиями:
1. Учетная запись включена
2. Дата из атрибута ExtensionAttribute7 должна быть позднее, чем дата в ExtensionAttribute15.

В Extension атрибутах даты в формате dd.mm.yyyy. Соответственно, если в ExtensionAttribute7 стоит дата позже, чем дата в ExtensionAttribute15, то эти учетные записи и должны вернуться.

Но если просто написать >=
(&(objectCategory=person)(objectClass=user) (ExtensionAttribute7>=ExtensionAttribute15) (!(userAccountControl:1.2.840.113556.1.4.803:=2)))
То воращается пустой список, хотя есть учетные записи, у которых есть ExtensionAttribute7 больше и меньше ExtensionAttribute15 (есть и такие и такие пользователи)


А если <=
(&(objectCategory=person)(objectClass=user) (ExtensionAttribute7<=ExtensionAttribute15) (!(userAccountControl:1.2.840.113556.1.4.803:=2)))
То возвращаются все включенные учетные записи, в которых атрибут Extesionattribute7 заполнен, то есть не пустой и не важно, что указано в ExtensionAttribute15 - больше дата или меньше.



Помогите, пожалуйста, понять логику ldapquery при работе с датами и написать правильный запрос. Запросы запускаю через оснастку "Пользователи и компьютеры". Может дата на самом деле - это просто строка, и нужно как-то перевести строку в дату? Если да, то как это сделать?

DJ Mogarych
07-08-2023, 16:26
Powershell

Get-ADUser -filter "enabled -eq 'True'" -Properties ExtensionAttribute7,ExtensionAttribute15 |? {($_.ExtensionAttribute7 -as [datetime]) -gt ($_.ExtensionAttribute15 -as [datetime])} |select name,samaccountname,ExtensionAttribute15,ExtensionAttribute7

dahiko
08-08-2023, 05:59
Get-ADUser -filter "enabled -eq 'True'" -Properties ExtensionAttribute7,ExtensionAttribute15 |? {($_.ExtensionAttribute7 -as [datetime]) -gt ($_.ExtensionAttribute15 -as [datetime])} |select name,samaccountname,ExtensionAttribute15,ExtensionAttribute7 »


Спасибо, это работает. А как такое можно сделать через ldapquery без powershell?

DJ Mogarych
08-08-2023, 09:11
Полагаю, что никак.

Sham
09-08-2023, 09:33
могут быть нюансы с конвертацией в datetime в зависимости от системного языка, поэтому надёжнее [Datetime]::ParseExact() с указанием cultureinfo ru-RU




© OSzone.net 2001-2012