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