使用Powershell在特定OU中的单个列表中显示AD用户密码过期日期和密码已过期的用户?

使用Powershell在特定OU中的单个列表中显示AD用户密码过期日期和密码已过期的用户?,powershell,active-directory,Powershell,Active Directory,所以我有一个甜美的代码,它告诉我密码过期日期,以及密码过期的天数。它工作正常,但是除了这个列表之外,我还想查看已经过期密码的帐户,因为这个脚本只显示具有工作密码的活动帐户 除了此列表之外,是否有可能在“DaysUntilExpired”列中列出带有“0”标记的过期帐户 导入模块ActiveDirectory $MaxPwdAge=(获取ADDefaultDomainPasswordPolicy).maxpswordAge.Days $expiredDate=(获取日期).addDays(-$Ma

所以我有一个甜美的代码,它告诉我密码过期日期,以及密码过期的天数。它工作正常,但是除了这个列表之外,我还想查看已经过期密码的帐户,因为这个脚本只显示具有工作密码的活动帐户

除了此列表之外,是否有可能在“DaysUntilExpired”列中列出带有“0”标记的过期帐户

导入模块ActiveDirectory
$MaxPwdAge=(获取ADDefaultDomainPasswordPolicy).maxpswordAge.Days
$expiredDate=(获取日期).addDays(-$MaxPwdAge)
#设置开始通知用户的天数。-不要修改--
#筛选密码在过期日期$date内的所有用户。
$ExpiredUsers=Get ADUser-SearchBase“OU=US,OU=Organization,DC=Company,DC=My,DC=com”-过滤器{(PasswordLastSet-gt$expiredDate)-和(PasswordNeverExpires-eq$false)-和(Enabled-eq$true)}-属性PasswordNeverExpires,PasswordLastSet,Mail |
选择samaccountname,PasswordLastSet,@{name=“DaysUntilExpired”;表达式={$\密码LastSet-$ExpiredDate |选择-ExpandProperty Days}}}}
排序对象PasswordLastSet
$ExpiredUsers

我做了一些简化,主要是为了更容易阅读您的代码。然而,如果我没有看错你的问题,你只想知道一个帐户什么时候已经过期了。但是,我认为代码已经可以通过返回负数的天数来实现这一点。但是,您正在筛选定义为未过期的用户,
(PasswordLastSet-gt$expiredDate)
。尝试删除过滤器的该部分

此外,您可能需要添加一个布尔属性,如“Expired”。如果
$daysuntileexpired-le 0
将其设置为true,否则将其设置为false

Import-Module ActiveDirectory
$MaxPwdAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Days
$expiredDate = (Get-Date).addDays(-$MaxPwdAge)

$OU     = "OU=US,OU=Organization,DC=Company,DC=My,DC=com"
$Filter = "(PasswordNeverExpires -eq `$false) -and (Enabled -eq `$true)"
$Props  = 'PasswordNeverExpires', 'PasswordLastSet', 'Mail'

#Set the number of days until you would like to begin notifing the users. -- Do Not Modify --
#Filters for all users who's password is within $date of expiration.
$ExpiredUsers = Get-ADUser -SearchBase $OU -Filter $Filter -Properties $Props | 
Select-Object samaccountname, PasswordLastSet, @{name = "DaysUntilExpired"; Expression = { ($_.PasswordLastSet - $ExpiredDate).Days } } | 
Select-Object *,@{Name = 'Expired'; Expression = {If($_.DaysUntilExpired -le 0){$true}Else{$false} }} |
Sort-Object PasswordLastSet
$ExpiredUsers
此外,您正在检索mail属性,但没有选择它。我假设您将向用户发送电子邮件,因此您可能希望将其添加到
Select Object
命令中


如果有帮助,请告诉我。

欢迎访问该网站。使用代码块非常重要,这样其他人就更容易阅读您的代码。你退房了吗?有各种选项可列出禁用、过期和非活动帐户。看看这些例子。
Search-ADAccount
确实非常有用,但我认为它在这里不起作用。看起来他想在密码到期前#天内通知。有趣的是,帮助文档暗指了一个
-PasswordExpiring
参数,但没有。即使如此,你也必须指定一个特定的日期,而不是日期或范围。天哪,你完全正确,谢谢!忘记删除(PasswordLastSet-gt$expiredDate)部分。谢谢你对布尔属性的建议,非常有用!