用户帐户控制和属性

时间:2017-08-01 12:52:49

标签: powershell attributes ldap

我已经运行了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

1 个答案:

答案 0 :(得分:0)

对于AD帐户,"用户无法更改密码"由用户帐户上的访问控制条目而不是ADS_UF_PASSWD_CANT_CHANGE属性中的userAccountControl(0x40)位确定。 (有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/aa746448.aspx。)PowerShell cmdlet足够聪明,可以为您完成繁重的工作。