该公司具有AD结构,我需要搜索用户所属的组名。 我确实知道应该位于用户的“ memberof”属性中,让我们说这并不总是正确的。
我尝试使用以下代码在OU中所有组的“成员”属性中找到用户名(或对象名),然后取回该组的名称。 不幸的是,我认为我缺少了一些东西。 反向搜索(即:列出组的成员)正在运行,但就我而言,我不知道组的名称。另外,我需要所有的组,而不仅仅是一个组。
uname ="*anyoldusername*"
$Searcher = [ADSISearcher]"(member=$uname)"
$Searcher.SearchRoot = [ADSI] "LDAP://mydomainsearchroot"
$Searcher.PageSize = 10000
$result = $Searcher.FindAll().Properties.cn
echo $result
答案 0 :(得分:2)
这应该做到:
$UserName ="TestUser"
$Searcher = [ADSISearcher]""
$Searcher.SearchRoot = [ADSI]"LDAP://mydomainsearchroot"
$Searcher.Filter = "Name=$UserName"
$UserDN = $Searcher.FindOne().properties.distinguishedname
$Searcher.Filter = "(member:1.2.840.113556.1.4.1941:=$UserDN)"
$Searcher.PageSize = 10000
$result = $Searcher.FindAll().Properties.cn
$result
第一个搜索是查找用户的DN,因为在下一个搜索中筛选器需要使用该DN。要了解有关“ 1.2.840.113556.1.4.1941”过滤器的更多信息,请参见this documentation。
哦,echo是Powershell中Write-Output的别名,最好直接使用它,甚至完全忽略它,因为无论如何,字符串或变量本身都会默认为Write-Output,如$ result为最后运行。