我已经运行了2种不同的方法来检查用户是否可以更改密码。首先我使用CMDLET进行查询,其中有12个无法更改密码。然后我使用matching rule bit and
进行了LDAP搜索,但没有返回任何内容。这是什么原因?
1. Get-ADUser -Filter * -Properties CannotChangePassword| where {$_.CannotChangePassword} | sort-object {$_.samAccountName} | Select samAccountName
总用户无法更改密码:12
2.
$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$ADSearch = New-Object System.DirectoryServices.DirectorySearcher
$ADSearch.SearchRoot ="LDAP://$domain"
$ADSearch.SearchScope = "subtree"
$ADSearch.PageSize = 100
$ADSearch.Filter = "(&(objectCategory=person)(objectClass=user))"
$properies =@(
"sAMAccountName",
"userAccountControl"
)
foreach($pro in $properies)
{
$ADSearch.PropertiesToLoad.add($pro)| out-null
#the name of property of the object, search will load the name in an array #properties
}
$userObjects = $ADSearch.FindAll()
forEach ($user In $userObjects)
{
$accountDis= $user.Properties.Item("userAccountControl")[0]
$global:sam = $user.Properties.Item("sAMAccountName")[0]
if( $accountDis -band 64){
$passChange ="Not allowed"
"""$accountDis","$passChange"
}
}
用户无法更改密码:0
答案 0 :(得分:0)
对于AD帐户,"用户无法更改密码"由用户帐户上的访问控制条目而不是ADS_UF_PASSWD_CANT_CHANGE
属性中的userAccountControl
(0x40)位确定。 (有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/aa746448.aspx。)PowerShell cmdlet足够聪明,可以为您完成繁重的工作。