在AD中查找所有子网

时间:2013-10-24 05:46:22

标签: search active-directory subnet

我正在尝试检索AD中的所有子网。 我需要来自cn,location,description和Site属性的值。 当我打开“Active Directory站点和服务”应用程序并选择“子网”

时,我可以看到这些属性

我发现了一些我认为可以检索这些值的代码

        Forest myForest = Forest.GetCurrentForest();
        ReadOnlySiteCollection mySites = default(ReadOnlySiteCollection);
        ActiveDirectorySubnetCollection mySubnets = default(ActiveDirectorySubnetCollection);
        int iEnumSites = 0;
        int iEnumSubnets = 0;
        mySites = myForest.Sites;
       Dictionary<string, Subnet> Subnets = new Dictionary<string, Subnet>();
        //for each site loop through
        for (iEnumSites = 0;  iEnumSites < mySites.Count -1; iEnumSites++)
        {
         // for each subnet in each site loop through
         mySubnets = mySites[iEnumSites].Subnets;
            for (iEnumSubnets = 0 ; iEnumSubnets < mySubnets.Count -1; iEnumSubnets++)
            {

                Subnet s = new Subnet(mySubnets[iEnumSubnets].Name, mySubnet[iEnumSubnets].Site, mySubnets[iEnumSubnets].Location,"");
                Subnets.Add(s.GetKey(), s);
            }

        }

但是,“描述”属性不存在。每个子网仅公开3个属性/属性。 有谁知道如何访问我们所有子网上的所有属性?

谢谢

ERCK

1 个答案:

答案 0 :(得分:0)

好的,所以当您在AD中引用某个对象时,可以在其上执行GetDirectoryEntry

Forest myForest = Forest.GetCurrentForest();
ReadOnlySiteCollection mySites = default(ReadOnlySiteCollection);
ActiveDirectorySubnetCollection mySubnets = default(ActiveDirectorySubnetCollection);
int iEnumSites = 0;
int iEnumSubnets = 0;
mySites = myForest.Sites;
Dictionary<string, Subnet> Subnets = new Dictionary<string, Subnet>();
//for each site loop through
for (iEnumSites = 0;  iEnumSites < mySites.Count -1; iEnumSites++)
{
   // for each subnet in each site loop through
   mySubnets = mySites[iEnumSites].Subnets;
   for (iEnumSubnets = 0 ; iEnumSubnets < mySubnets.Count -1; iEnumSubnets++)
   {
        var ent= mySubnet[iEnumSubnets].GetDirectoryEntry();

        // you now have access to all attributes e.g the description attribute
        string.Join(",",ent.Properties["description"].Cast<object>().Select(v => Convert.ToString(v)))
   }

}

以及您想要的任何其他属性。