我想编写一个基本脚本来检查密码即将过期的帐户。
这是我的剧本:
$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 :(得分: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}}