public void WriteGroup(GroupPrincipal group)
        {
            Console.WriteLine(group.Name);

            if (_showPrincipalDetails)
            {
                Console.WriteLine("\tDisplayName:     "+ $"{group.DisplayName}");
                Console.WriteLine("\tSid:             " + $"{group.Sid}");
                Console.WriteLine("\tIsSecurityGroup: " + $"{group.IsSecurityGroup}");
                Console.WriteLine("\tDescription:     " + $"{group.Description}");
            }

            if (_showMembership)
            {
                Console.WriteLine("\tMembers:");
                foreach (var member in group.GetMembers().ToList())
                {
                    Console.WriteLine("\t\t" + $"{member.Name} ({member.StructuralObjectClass})");
                }
            }
        }
        public void WriteGroup(GroupPrincipal group)
        {
            if (!_headerWritten)
            {
                _headerWritten = true;

                _writer.Write("Name");

                if (_options.ShowMembership)
                {
                    _writer.Write(";Membership");
                }

                _writer.WriteLine();
            }

            _writer.Write("\"" + group.Name + "\"");

            if (_options.Detailed)
            {
                _writer.Write(";\"" + group.Name + "\";" +
                              "\"" + group.DisplayName + "\";" +
                              "\"" + group.Sid + "\";" +
                              "\"" + group.IsSecurityGroup + "\";" +
                              "\"" + group.Description + "\"");
            }

            if (_options.ShowMembership)
            {
                foreach(var member in group.GetMembers().Select(member => member.Name).ToList())
                {
                    _writer.Write(Environment.NewLine + "\"" + group.Name + "\";\"" + member + "\"");
                }
            }

            _writer.WriteLine();
        }
        /// <summary>
        /// This method adds all of the user principals in the specified group to the list of principals.
        /// It will also include any user principal that is a member of a group within the specified group.
        /// </summary>
        /// <param name="group">The group from which users will be added to the principal list.</param>
        /// <param name="principals">The list of user principals.</param>
        private static void AddGroupMembers(GroupPrincipal group, List<PrincipalDetails> principals)
        {            
            using (PrincipalSearchResult<Principal> list = group.GetMembers())
            {
                foreach (Principal principal in list)
                {
                    UserPrincipal userPrincipal = principal as UserPrincipal;
                    if (userPrincipal != null)
                    {
                        principals.Add(new PrincipalDetails(userPrincipal));
                        userPrincipal.Dispose();
                    }
                    else
                    {
                        GroupPrincipal groupPrincipal = principal as GroupPrincipal;

                        if (groupPrincipal != null)
                        {
                            AddGroupMembers(groupPrincipal, principals);
                        }
                    }
                }
            }
        }
Beispiel #4
0
 private void IterateGroup(GroupPrincipal group, HashSet<UserData> usersHash)
 {
     foreach (Principal p in group.GetMembers())
      {
     if (p is GroupPrincipal)
     {
        IterateGroup((GroupPrincipal)p, usersHash);
     }
     else if (p is UserPrincipal)
     {
        UserData u = new UserData(((UserPrincipal)p).DisplayName, ((UserPrincipal)p).SamAccountName, group.Name);
        usersHash.Add(u);
     }
      }
 }
Beispiel #5
0
 private static void BuildHList(GroupPrincipal node, int level, GroupPrincipal parent)
 {
     PrincipalSearchResult<Principal> rslts = node.GetMembers();
     _groups.Add(new GroupObj() { Group = node, Level = level, Parent = parent });
     foreach (GroupPrincipal grp in rslts.Where(g => g is GroupPrincipal))
         BuildHList(grp, level + 1, node);
 }