Как найти аккаунт, срок действия которого истекает через 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

1 ответ

Следующая команда вернет объекты ADUser для user1 и user2 в PowerShell v3, но пустую в 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
    }
} 
Другие вопросы по тегам