我肯定做了一些愚蠢的事情,但我真不知道是什么。根据我的谷歌搜索,这个 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
}
经过这样的改变,我得到了看起来像是期望的输出。