【问题标题】:LDAP userAccountControl atttributeLDAP userAccountControl 属性
【发布时间】:2016-07-26 07:42:56
【问题描述】:

PowerShell 中,我使用以下LDAP query 来检索主机名的活动目录属性:

$Filter = "(&(ObjectCategory=Computer)(ObjectClass=Computer)(CN=$ComputerName))"
if ($Found = ([ADSISEARCHER]$Filter).FindOne()) {
    $Details = $Found.GetDirectoryEntry()
}

拥有这些属性后,我想检查计算机帐户是否被禁用。以下LDAP query 允许我这样做:

$Filter = "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=2)(CN=$ComputerName))"
([ADSISEARCHER]$Filter).FindOne()

我想知道的是,如果计算机帐户被禁用,我怎样才能避免使用第二个LDAP query 并使用第一个LDAP query 中的变量$Details 来获取$True$False

我找到了一些extra information,但我似乎无法将它们拼凑在一起。

感谢您的帮助。

【问题讨论】:

  • 是否需要使用 LDAP 查询,或者您也可以在 powershell 中使用 ActiveDirectory 模块?
  • 不,ActiveDirectory 不可用。

标签: powershell active-directory ldap


【解决方案1】:

您要查找的信息编码在目录条目对象的userAccountControl 中。但是,该属性包含一个带有数值的数组,所以需要检查是否设置了第一个数组元素中的“禁用”flag(数值2):

$disabled = [bool]($Details.userAccountControl[0] -band 2)

【讨论】:

  • 我试过了,但它不起作用。当我在Enabled 的计算机帐户名称上尝试时,我得到FALSE,当我在Disabled 上尝试时,我得到FALSE 到。
  • 无法复制。如果我在禁用的计算机上使用上述内容,我会得到$true。如果计算机已启用,我会得到$false$Details | fl * 的输出对于您无法使用的计算机来说是什么?
  • 这是我的测试过程中的一个错误。你是对的,这完美!感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多