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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Выборка пользователей с атрибутом accountExpires < текущей даты АД (http://forum.oszone.net/showthread.php?t=329780)

ejik_off 14-09-2017 09:10 2764594

Выборка пользователей с атрибутом accountExpires < текущей даты АД
 
Доброе время суток!
собственно задача в названии темы.
вот скрип
Код:

$date = get-date -Format G
Get-ADUser -Filter * -Properties accountExpires| select name, @{label='accountExpires';e={[DateTime]::FromFileTime($_.accountExpires)}} | Where-Object {$_.accountExpires -Gt "1/1/1601 6:00:00 AM" -and [datetime]::FromFileTime($_.accountExpires) -lt $date }

При запуске скрипта вываливается ошибка:
Цитата:

Cannot convert argument "0", with value: "2/16/2017 12:00:00 AM", for "FromFileTime" to type "System.Int64": "Cannot convert value "2/16/2017 12:00:00 AM" to type "System.Int64". Error: "Invali
d cast from 'DateTime' to 'Int64'.""
At line:1 char:265
+ Get-ADUser -Filter * -Properties accountExpires| select name, @{label='accountExpires';e={[DateTime]::FromFileTime($_.accountExpires)}} | Where-Object {$_.accountExpires -Gt "1/1/1601 6:00:00 AM" -and [datetime]::FromFileTime <<<< ($_.accountExpires) -lt $date }
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

подскажите где ошибка?

Kazun 14-09-2017 09:29 2764595

Код:

$date = Get-Date
Get-ADUser -LDAPFilter "(&(!accountExpires=0)(!accountExpires=9223372036854775807))" -Properties accountExpires| select name, @{n='accountExpires';e={[DateTime]::FromFileTime($_.accountExpires)}} | Where-Object {$_.accountExpires -lt $date }

или
Код:

Get-ADUser -Filter {AccountExpirationDate -lt $date}
или
Код:

Get-ADUser -Filter "AccountExpirationDate -lt '$(Get-Date)'"

ejik_off 14-09-2017 09:58 2764603

большое спасибо!!!

ejik_off 14-09-2017 11:00 2764610

Kazun, странно, в тестовой среде все перечисленные команды отработали правильно.
А в продуктиве первая команда вытащила всех юзеров у которых атрибут accountExpires = 1/1/1601 6:00:00 AM, хатя в фильтре указано таких не выводить, как так получилось?
Остальные две команды вообще ничего не вывели.
и в тесте и в продуктиве DC 2008R2

ejik_off 14-09-2017 12:54 2764626

Все разобрался, почему то при запуске скрипта на самом контролере не работает, запустил скрипт с рабочей машины, все работает. Что то консолью Powershell_ise на ДС :)


Время: 17:59.

Время: 17:59.
© OSzone.net 2001-