ADSI 查询,我试图找到用于识别本地帐户是否被禁用的标志
ADSI query, I am trying to find the flag for identifying if a local account is disabled
为了尝试获取所有可能的值,我尝试将它们全部打印出来,我认为这是一种获取我感兴趣的值的简单方法。但是我有兴趣确定一个帐户是否被禁用以及它在我看来,这个值不适用于本地帐户?这看起来很疯狂,所以我一定遗漏了一些东西。任何帮助将不胜感激。
我已经检查了 here 但它没有定义标志,我尝试了明显的(禁用,启用)但是正如我所说的那样,我没有从下面的结果中看到任何明显的东西。
$user_adsi = [ADSI]"WinNT://$ComputerName"
$users = $user_adsi.Children | where { $_.SchemaClassName -eq 'user' } | select *
try
{
foreach ($user in $users)
{
Write-Host $user
}
}
对于禁用的用户,您需要检查 UserFlags
属性 表示十进制的二进制位 2
。
$disabledUsers = $user_adsi.Children |
where { $_.SchemaClassName -eq 'user' -and $_.UserFlags[0] -band 2}
由于 UserFlags
(工作方式类似于 UserAccountControl
)是类型 PropertyValueCollection
,您需要索引到它的第一个元素 [0]
.
您还可以使用 Where()
方法创建禁用和启用用户的两个列表:
$DisabledUsers,$EnabledUsers = $user_adsi.children.where({$_.SchemaClassName -eq 'user'}).where({$_.UserFlags[0] -band 2},'Split')
Split
模式会将满足条件的项输出到第一个变量($DisabledUsers
),其余项输出到第二个变量($EnabledUsers
)。
为了尝试获取所有可能的值,我尝试将它们全部打印出来,我认为这是一种获取我感兴趣的值的简单方法。但是我有兴趣确定一个帐户是否被禁用以及它在我看来,这个值不适用于本地帐户?这看起来很疯狂,所以我一定遗漏了一些东西。任何帮助将不胜感激。
我已经检查了 here 但它没有定义标志,我尝试了明显的(禁用,启用)但是正如我所说的那样,我没有从下面的结果中看到任何明显的东西。
$user_adsi = [ADSI]"WinNT://$ComputerName"
$users = $user_adsi.Children | where { $_.SchemaClassName -eq 'user' } | select *
try
{
foreach ($user in $users)
{
Write-Host $user
}
}
对于禁用的用户,您需要检查 UserFlags
属性 表示十进制的二进制位 2
。
$disabledUsers = $user_adsi.Children |
where { $_.SchemaClassName -eq 'user' -and $_.UserFlags[0] -band 2}
由于 UserFlags
(工作方式类似于 UserAccountControl
)是类型 PropertyValueCollection
,您需要索引到它的第一个元素 [0]
.
您还可以使用 Where()
方法创建禁用和启用用户的两个列表:
$DisabledUsers,$EnabledUsers = $user_adsi.children.where({$_.SchemaClassName -eq 'user'}).where({$_.UserFlags[0] -band 2},'Split')
Split
模式会将满足条件的项输出到第一个变量($DisabledUsers
),其余项输出到第二个变量($EnabledUsers
)。