我正在尝试检索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
答案 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)))
}
}
以及您想要的任何其他属性。