0

在 PowerShell 中,我已经知道如何使用 DirectoryEntry 和 DirectorySearcher 来获取某个 OU 中的用户列表。这种方法的结果主要是我在 AD 中寻找的结果,但使用 WMI 查询 Win32_UserAccount 似乎更容易获得相同的信息。我更喜欢这个类的属性,并且 SID 已经是正确的字符串格式(在第一种方法中,它需要从十六进制字节数组转换为字符串)。

使用 Win32_UserAccount 的问题是我找不到按 OU 过滤它的方法。我可以按域名和名称成功过滤,并尝试使用 WQL 进行几次猜测,但似乎找不到 OU 过滤器的任何语法。我的大多数尝试都导致“无效查询”。以下是一个有效的查询示例:

$user = gwmi Win32_UserAccount -filter "name='somebody' AND domain='mydomain'"

如果没有办法按 OU 过滤,那么我将返回使用 DirectoryEntry/DirectorySearcher。

4

2 回答 2

1

鉴于Win32_Account类没有与 LDAP 相关的属性,我认为不幸的是你不走运。

除了目录搜索以获取 LDAP 相关数据之外,您当然可以使用它来获取所需格式的 SID。

于 2012-03-20T01:19:33.097 回答
1

您是否熟悉 Quest 的免费 AD cmdlet?

http://www.quest.com/powershell/activeroles-server.aspx

您可以根据OU过滤用户并获取各种格式的SID:

PS> Get-QADUser SizeLimit 0 -SearchRoot <OU_DistinguishedName>' | fl *sid*

objectSid : 0105000000000005150000006753F33372134F3FF673476FF4023001
Sid       : S-1-5-21-54781788-1045369324-1866953526-501
(...)
于 2012-03-20T08:22:06.677 回答