как найти учетную запись, срок действия которой истекает через 90 дней после даты создания

Я пытаюсь найти все временные учетные записи в AD, срок действия которых истекает через 90 дней после создания учетной записи. Вот что у меня есть до сих пор. Я не уверен, как это рассчитать. Я не получаю никакого вывода.

    $expireDate = (Get-ADUser -filter * -Properties accountExpires).accountExpires
$accountExpireDate = ([System.DateTime]::FromFileTime($expireDate)).AddDays(-90).Date

Get-ADUser -Filter {whenCreated -ge $accountExpireDate} -Properties whenCreated | select name | export-csv 'c:\temp\all_temp_users.csv'enter code here

person user2402045    schedule 24.04.2015    source источник


Ответы (1)


Следующая команда вернет объекты ADUser для user1 и user2 в PowerShell v3, но null в powershell v2.

(@("user1", "user2") | Get-ADUser).Name

Если вы используете powershell v2, я бы посоветовал попробовать изменить команду на:

Get-ADUser -filter * -Properties accountExpires | Select -ExpandProperty AccountExpires

Это вернет массив атрибутов AccountExpires.

Другая проблема заключается в том, что вы, по сути, подключаете возможный массив к

[System.DateTime]::FromFileTime($expireDate)

При этом $expireDate является возможным массивом. Я считаю, что это вернет время только для первого элемента массива.

Другая возможная проблема может заключаться в том, что вы проверяете, превышает ли whenCreated дату истечения срока действия. Обычно эта дата будет меньше, чем . Все вместе, если вы ищете учетные записи с истекшим сроком действия, я бы сделал что-то вроде:

$users = Get-ADUser -filter * -Properties AccountExpires, WhenCreated
foreach ( $user in $users ) {
    $span = [DateTime]::FromFileTime($user.AccountExpires) - $user.WhenCreated

    if ( $span.Days -eq 90 ) { 
        # Do Something with user that was set to expire 90 days
    }
} 
person skukx    schedule 24.04.2015