2017-04-24 90 views
1

我想編寫一個基本腳本來檢查密碼即將到期的帳戶。Powershell用戶密碼日期

這裏是我的腳本:

$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 

一切似乎罰款在上面的代碼,它讀取我的OU許多帳戶類型。 如何添加一列來列出「到期日期」(密碼將在多少天內過期)?

現在,我需要做額外的工作,並運行此額外的代碼:

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

如果我的兩個腳本結合在一起,它也只是告訴我「有多少天后過期」。

回答

0

您可以通過在Select-Object語句中使用calculated property結合你的兩個腳本:

$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

非常感謝,我工作得很好。 –

0

你必須檢查屬性「的msDS-UserPasswordExpiryTimeComputed」

就可以計算出這樣的:

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

注:當前日期和計算日期的差異會給你你在找什麼。

+0

感謝改進的代碼。我會嘗試對其進行定製以適應我的工作。 –