![为什么这个列出组成员的脚本不起作用?](https://linux22.com/image/486884/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%B8%AA%E5%88%97%E5%87%BA%E7%BB%84%E6%88%90%E5%91%98%E7%9A%84%E8%84%9A%E6%9C%AC%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我肯定做了一些愚蠢的事情,但我真不知道是什么。根据我的谷歌搜索,这个 Powershell 脚本应该列出域用户组的成员:
$root=([ADSI]"").distinguishedName
$group = [ADSI] ("LDAP://cn=Domain Users,cn=Users," + $root)
Write-Host $group.distinguishedName
Write-Host "Members:"
foreach ($member in $group.member)
{
$member
}
但是当我运行它时我只得到输出:
CN=Domain Users,CN=Users,DC=mydomain,DC=local
Members:
因此,它找到了组,但没有列出成员。我在 Server 2003 和 Server 2008 上尝试过,但我不知道我的明显错误在哪里。请帮忙...
JR
答案1
我从未在 PowerShell 中这样做过,但我在 VBScript 中看到过同样的问题。
如果域用户是用户的主要组,则该用户不会显示为成员。尝试将您的主要组更改为其他组,然后再次运行脚本。
答案2
嗯。对我来说,它有效。您是将其作为脚本运行,还是以交互方式输入?
如果在交互式会话中按下回车键(或粘贴键)后出现提示>>
,请再次按下回车键,看看是否得到了结果。
当然,假设你的组中确实有用户;)
答案3
奇怪,域用户组似乎没有成员属性。如果我查询域中的另一个组,我会得到属性。
我查看了 ADSI Edit 中的组,成员属性是空的。
我将进入 ADSI Edit 并检查域管理员组的成员属性,看看那里是否有任何条目。
至于为什么他们不在那里以及该团体如何获得成员资格,我不太清楚并且我自己也很好奇这些问题的答案。
答案4
这是 Powershell 1.0 还是 2.0?我在 Powershell 2.0 上运行它,也得到了空白输出。但是,在执行“$group | get-member”后,我看到有一个名为“MemberOf”的属性(仅“member”没有列出任何内容)。
在这种情况下,如果将最后一行更改为:
foreach ($member in $group.memberOf)
{
$member
}
经过这样的改变,我得到了看起来像是期望的输出。