Powershell和C#.NET AD组成员资格

时间:2015-10-08 20:49:48

标签: c# powershell active-directory ldap

以下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组的推荐错误)

1 个答案:

答案 0 :(得分:0)

如编辑中所述,问题似乎是如果旧版用户帐户存在,主要组ID为512,则它们不会出现在Domain Admins组中。

因此,我必须使用以下过滤器:

(|(primaryGroupId = 512)(memberOf = CN = Domain Admins,CN = Users,DC = domain,DC = local))

这给了我完整的列表!