Я хочу извлечь всех членов групп безопасности.
У меня есть SG в активном каталоге Azure, в котором есть 500 участников. Я использовал приведенный ниже код, он извлекает 48 участников, а затем завершается с ошибкой, указанной ниже.
Я проверил 49 имен членов, имеющих специальный символ (-)
На сервере нет такого объекта
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domainName);
// GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx,IdentityType.Name, groupName);
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx,groupName);
try
{
if (grp != null)
{
WriteToFile("Getting data from Active directory security group -" + groupName + " started at :" + DateTime.Now+ grp.Name);
var searchResult = grp.GetMembers(true);
int counter = 0;
foreach (System.DirectoryServices.AccountManagement.Principal p in searchResult)
{
counter++;
System.DirectoryServices.DirectoryEntry de = p.GetUnderlyingObject() as System.DirectoryServices.DirectoryEntry;
string schemaClassName = de.SchemaClassName;
string sName = de.Properties["CN"].Value.ToString();
string[] saDN = de.Properties["DistinguishedName"].Value.ToString().Split(',').ToArray();
string sDomain = string.Empty;
int iDCFound = 0;
foreach (string s in saDN)
{
if (s.ToLower().StartsWith("dc") && iDCFound == 0)
{
sDomain = s.Split('=').ElementAt(1);
iDCFound = 1;
}
}
}
}
else
{
WriteToFile("Couldn't find group -" + groupName + " started at :" + DateTime.Now);
}
System.Threading.Thread.Sleep(2);
}
catch (Exception ex)
{
WriteToFile("Error message :" + ex.Message + " at: " + DateTime.Now);
throw;
}