На сервере нет такого объекта при извлечении членов групп безопасности. - PullRequest
1 голос
/ 04 июля 2019

Я хочу извлечь всех членов групп безопасности.

У меня есть 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;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...