是否有任何 powershell 命令可以输出来自特定组织单位 (OU) 的密码已过期的用户。
如果可以的话,是否可以将其与另一个命令合并到一个脚本中,输出特定 OU 中所有用户的到期时间?
谢谢。
答案1
从特定 OU 获取 AD 用户密码过期报告:
Import-Module ActiveDirectory
Get-ADUser -SearchBase "OU=TestOU,DC=TestDomain,DC=Local" -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties "SamAccountName","msDS-UserPasswordExpiryTimeComputed" |
Select-Object -Property "SamAccountName", @{Name="Password Expiry Date"; Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} |
Format-Table
您还可以从此博客中获得帮助,该博客可以让您了解如何通过电子邮件向用户发送活动目录密码过期通知和计划报告、警报并遵守所有与密码过期相关的任务,以节省您的时间:http://www.symantec.com/connect/blogs/how-automate-password-change-notification-through-email
答案2
密码已过期的用户:
Get-ADUser -SearchBase "ou=MyOU,dc=MyDomain,dc=Local" -filter * -properties Name, PasswordNeverExpires, PasswordExpired, PasswordLastSet | where {$_.Enabled -eq "True"} | where {$_.PasswordNeverExpires -eq $false} | where {$_.passwordexpired -eq $true}
要获取密码过期时间,您应该获取 PasswordLastSet 属性并从域策略中添加 MaxPasswordAge(例如 $DefaultmaxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge)。
请查看 TechNet 上的密码过期电子邮件通知脚本: https://gallery.technet.microsoft.com/Password-Expiry-Email-177c3e27 对于该主题来说是个很好的样本。
答案3
列出特定 OU 中密码已过期的已启用用户:
Get-ADUser -filter {Enabled -eq $True -and PasswordExpired -eq $True} -SearchBase "OU=Finance,OU=Users,DC=yourdomain,DC=com"
列出特定 OU 内已启用的用户及其密码过期日期:
Get-ADUser -filter {Enabled -eq $True} -SearchBase "OU=Finance,OU=Users,DC=yourdomain,DC=com" –Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed"
|
Select-Object -Property "Displayname",@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}