Powershell为用户密码日期

时间:2017-04-24 08:02:00

标签: 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}

如果我将两个脚本组合在一起,它只显示“过期多少天”。

2 个答案:

答案 0 :(得分:0)

您已检查属性 “msDS-UserPasswordExpiryTimeComputed”

您可以像这样计算:

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

注意:当前日期和计算日期的差异将为您提供所需的信息。

答案 1 :(得分: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}}