如何按OU过滤Win32_UserAccount结果

时间:2012-03-19 23:38:12

标签: powershell active-directory wmi-query wql

在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。

2 个答案:

答案 0 :(得分:1)

鉴于Win32_Account课程没有与LDAP相关的属性,我认为遗憾的是你不幸。

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

答案 1 :(得分: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
(...)