使用 Powershell 查询域控制器对象

使用 Powershell 查询域控制器对象

有人可以向我解释为什么这不起作用吗?

Import-Module ActiveDirectory 
$dcs = Get-ADComputer -Filter {DistinguishedName -Like "*Domain Controllers*"}

我没有得到该查询的任何结果。

或者,有人可以建议一种使用上述模块的方法,我可以在我的域中生成一个不是域控制器的系统列表(这是我最终想要实现的)。

干杯

答案1

在我看来,这似乎是个错误。-like 运算符不适用于所有属性。它不适用于 DistinguishedName、SID、ObjectClass,但适用于 Name、DSNHostName、SamAccountName...

以下命令将为您提供所有域控制器:

PS C:> Get-ADComputer -SearchBase“OU =域控制器,DC =测试,DC =本地”-过滤器*

此命令将为您提供所有非域控制器的计算机:

PS C:> Get-ADComputer -LDAPfilter“(&(objectCategory=Computer)(!userAccountControl:1.2.840.113556.1.4.803:=8192))”

答案2

由于当您提升服务器时,所有域控制器都应位于 AD 中的“域控制器”OU 中,因此,为什么不尝试:

$dcs = Get-ADComputer -SearchRoot "MYDOMAIN/Domain Controllers" -SearchScope onelevel

我认为这就是您上面尝试做的事情。还请注意,这不是查找域控制器的明确方法。理想情况下,您应该按成员类型进行搜索。

$dcs = get-ADComputer -SearchRoot "MYDOMAIN" -SearchScope subtree -filter {ComputerRole -eq "DomainController" }

这应该可以找到任何任性的 DC :)

顺便说一句,我花了 30 分钟尝试安装 AD 模块,但没有成功 - 它显然是“2008 R2 中的新功能”,如果你手边没有 2008R2 机器的话,这完全就是 PITA :) 我已经使用 Quest AD 管理工具来设计答案 - 参数是相同的...

相关内容