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

Вот мой сценарий:

$maxPasswordAges = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Days

$Today = Get-Date

Get-AdUser -Searchbase "MyOU" -filter * - Properties PasswordExpired, AccountExpirationDate, PasswordLastset | Sort-Object  PasswordlastSet 
 Select-Object Name, PasswordExpired, AccountExpirationDate, PasswordlastSet

В приведенном выше коде все выглядит нормально, в моем подразделении читается много типов учетных записей. Как я могу добавить дополнительный столбец, чтобы перечислить «Срок действия» (через сколько дней истекает срок действия пароля)?

Сейчас мне нужно выполнить дополнительную работу и запустить этот дополнительный код:

where-object {$_.PasswordlastSet} | foreach {($_.Passwordlastset.AddDays($maxpasswordage) - $Today).Days}

Если я объединю два сценария вместе, он покажет мне только «Сколько дней истечет».

1
Apollo Thai 24 Апр 2017 в 11:01

2 ответа

Лучший ответ

Вы можете объединить два сценария, используя вычисляемое свойство в { {X0}} заявление:

$maxPasswordAges = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Days 
$Today = Get-Date

Get-AdUser -Searchbase "MyOU" -filter * - Properties PasswordExpired, AccountExpirationDate, PasswordLastset |
    Sort-Object  PasswordlastSet |
    Select-Object Name, PasswordExpired, AccountExpirationDate, PasswordlastSet, @{Name="DaysToExpire";Expression={($_.Passwordlastset.AddDays($maxpasswordage) - $Today).Days}}
0
Mark Wragg 24 Апр 2017 в 08:44

Вы должны проверить свойство "msDS-UserPasswordExpiryTimeComputed" .

Вы можете рассчитать это так:

(((Get-ADUser –Identity 'TestUser' -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")-(Get-Date).Days)

Примечание. Разница между текущей датой и вычисленной датой даст вам то, что вы ищете.

0
Ranadip Dutta 24 Апр 2017 в 08:15
43582774