Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Ldapquery - сравнение двух дат (http://forum.oszone.net/showthread.php?t=353967)

dahiko 07-08-2023 13:14 3013446

Ldapquery - сравнение двух дат
 
Всем привет!

Пытаюсь с помощью 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 3013458

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 3013501

Цитата:

Цитата DJ Mogarych
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 3013504

Полагаю, что никак.

Sham 09-08-2023 09:33 3013616

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


Время: 14:01.

Время: 14:01.
© OSzone.net 2001-