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); } } } } }
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); } } }
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); }