Войти

Показать полную графическую версию : [решено] Выборка пользователей с атрибутом accountExpires < текущей даты АД


ejik_off
14-09-2017, 09:10
Доброе время суток!
собственно задача в названии темы.
вот скрип
$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
$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
большое спасибо!!!

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

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




© OSzone.net 2001-2012