如何按OU筛选Win32_UserAccount结果



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

鉴于Win32_Account类别没有LDAP相关的属性,我认为您运气不好。

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

您熟悉Quest的免费AD cmdlet吗?

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

您可以根据组织单位筛选用户,并获得各种格式的SID:

PS> Get-QADUser SizeLimit 0 -SearchRoot <OU_DistinguishedName>' | fl *sid*
objectSid : 0105000000000005150000006753F33372134F3FF673476FF4023001
Sid       : S-1-5-21-54781788-1045369324-1866953526-501
(...)

最新更新