以下Powershell命令给出了44的结果:
Get-ADGroupMember -server domain.local "domain admins" | measure
以下Powershell命令给出了34的结果:
Get-ADGroup -properties * 'domain admins' | select -expandproperty member | measure
以下C#代码给出了34的结果:
[TestMethod]
public void GT()
{
string groupname = "CN=Domain Admins,CN=Users";
string domain = "DC=domain,DC=local";
DirectoryEntry de = new DirectoryEntry("LDAP://" + groupname + "," + domain);
var count = 0;
foreach (object dn in de.Properties["member"])
{
count++;
Regex r = new Regex("CN=(.*?)(?:,[A-Z]+=|$)");
}
Console.WriteLine(count);
}
这种不一致的原因是什么?看起来“成员”属性在这里真正存在问题 - 它不是看服务帐户吗?
编辑如果主要组ID设置为512(域管理员),则由于遗留问题,它似乎不会反映为成员。我的问题是,如果有任何方法,在.NET中,在一个查询中获取所有这些。 (我想使用GroupPrincipal,但是它给了我Enterprise Admins组的推荐错误)
答案 0 :(得分:0)
如编辑中所述,问题似乎是如果旧版用户帐户存在,主要组ID为512,则它们不会出现在Domain Admins组中。
因此,我必须使用以下过滤器:
(|(primaryGroupId = 512)(memberOf = CN = Domain Admins,CN = Users,DC = domain,DC = local))
这给了我完整的列表!