我希望通过 Powershell 查询 AD,以便查看我的林中所有密码设置为永不过期的用户帐户。
我使用快速的谷歌搜索在网上找到了一些脚本,但它们似乎都没有按预期工作。然后我在 technet 上找到了以下内容(https://technet.microsoft.com/en-us/library/finding_users_whose_password_never_expires%28v=ws.10%29.aspx)但是当我运行该行时:
Search-ADAccount -PasswordNeverExpires | FT Name,ObjectClass -A
我只收到非常少量的结果,并且我知道返回的列表缺少大量我知道设置了此选项的用户。
请问有人能告诉我这个脚本有什么错误或者结果集太小的原因是什么吗?
答案1
我使用下面的方法并且有效。
get-aduser -filter * -properties Name, PasswordNeverExpires | where { $_.passwordNeverExpires -eq "true" } | where {$_.enabled -eq "true"}
它在 AD 数据库中搜索将“PasswordNeverExpires”设置为“True”的用户,然后在 Powershell 控制台中返回结果。
编辑措辞和错误的 cmdlet 并添加以下内容为了清理结果,将其添加到上述 powershell 代码的末尾
| Format-Table -Property Name, PasswordNeverExpires -AutoSize
答案2
你可以使用这样的方法:
Get-ADUser -filter { (PasswordNeverExpires -eq $true) -and (enabled -eq $true)} -searchbase "OU=,OU=,DC=,DC=" -Properties Surname,givenname, userprincipalName,PasswordNeverExpires| FT Name,ObjectClass,PasswordNeverExpires -A
答案3
由于我在多域环境中运行:
$domains = (Get-ADForest).domains
$Members = foreach ($domain in $domains) {
Get-ADUser -server $domain -filter {PasswordNeverExpires -eq "TRUE"} -Properties PasswordNeverExpires | select name,samaccountname,PasswordNeverExpires,mail | Where-Object {$_.PasswordNeverExpires -like "True"} |Export-Csv -Path "c:\temp\Never_Expire-$domain.csv" -NoTypeInformation }
对于单个域:
Get-ADUser -filter {PasswordNeverExpires -eq "TRUE"} -Properties PasswordNeverExpires | select name,samaccountname,PasswordNeverExpires,mail | Where-Object {$_.PasswordNeverExpires -like "True"} |Export-Csv -Path "c:\temp\Never_Expire.csv" -NoTypeInformation }