public static PSADGroup ToPSADGroup(this ADGroup group) { var adGroup = new PSADGroup() { DisplayName = group.DisplayName, SecurityEnabled = group.SecurityEnabled, Type = group.ObjectType, MailNickname = group.Mail }; return((PSADGroup)AssignObjectId(adGroup, group.ObjectId)); }
public static PSADObject ToPSADObject(this AADObject obj) { if (obj == null) { throw new ArgumentNullException(); } if (obj.ObjectType == typeof(User).Name) { var adUser = new PSADUser() { DisplayName = obj.DisplayName, Type = obj.ObjectType, UserPrincipalName = obj.UserPrincipalName }; return(AssignObjectId(adUser, obj.ObjectId)); } else if (obj.ObjectType == "Group") { var adGroup = new PSADGroup() { DisplayName = obj.DisplayName, Type = obj.ObjectType, SecurityEnabled = obj.SecurityEnabled, MailNickname = obj.Mail }; return(AssignObjectId(adGroup, obj.ObjectId)); } else if (obj.ObjectType == typeof(ServicePrincipal).Name) { var adSp = new PSADServicePrincipal() { DisplayName = obj.DisplayName, Type = obj.ObjectType, ServicePrincipalNames = obj.ServicePrincipalNames.ToArray() }; return(AssignObjectId(adSp, obj.ObjectId)); } else { var adObj = new PSADObject() { DisplayName = obj.DisplayName, Type = obj.ObjectType }; return(AssignObjectId(adObj, obj.ObjectId)); } }
public IEnumerable <PSADGroup> FilterGroups(ADObjectFilterOptions options, ulong first = ulong.MaxValue, ulong skip = 0) { if (!string.IsNullOrEmpty(options.Id)) { try { // use GetObjectsByObjectId to handle Redirects in the CSP scenario PSADGroup group = this.GetObjectsByObjectId(new List <string> { options.Id }).FirstOrDefault() as PSADGroup; if (group != null) { return(new List <PSADGroup> { group }); } } catch { /* The group does not exist, ignore the exception */ } } else { Rest.Azure.OData.ODataQuery <ADGroup> odataQuery = null; if (options.Mail != null) { odataQuery = new Rest.Azure.OData.ODataQuery <ADGroup>(g => g.Mail == options.Mail); } else { if (!string.IsNullOrEmpty(options.SearchString) && options.SearchString.EndsWith("*")) { options.SearchString = options.SearchString.TrimEnd('*'); odataQuery = new Rest.Azure.OData.ODataQuery <ADGroup>(g => g.DisplayName.StartsWith(options.SearchString)); } else { odataQuery = new Rest.Azure.OData.ODataQuery <ADGroup>(g => g.DisplayName == options.SearchString); } } return(new GenericPageEnumerable <ADGroup>( delegate() { return GraphClient.Groups.List(odataQuery); }, GraphClient.Groups.ListNext, first, skip).Select(g => g.ToPSADGroup())); } return(new List <PSADGroup>()); }
public List <PSADGroup> FilterGroups(ADObjectFilterOptions options) { List <PSADGroup> groups = new List <PSADGroup>(); if (!string.IsNullOrEmpty(options.Id)) { try { // use GetObjectsByObjectId to handle Redirects in the CSP scenario PSADGroup group = this.GetObjectsByObjectId(new List <string> { options.Id }).FirstOrDefault() as PSADGroup; if (group != null) { groups.Add(group); } } catch { /* The group does not exist, ignore the exception */ } } else { IPage <ADGroup> result = null; Rest.Azure.OData.ODataQuery <ADGroup> odataQuery = null; if (options.Paging) { if (string.IsNullOrEmpty(options.NextLink)) { if (options.Mail != null) { odataQuery = new Rest.Azure.OData.ODataQuery <ADGroup>(g => g.Mail == options.Mail); } else { odataQuery = new Rest.Azure.OData.ODataQuery <ADGroup>(g => g.DisplayName.StartsWith(options.SearchString)); } result = GraphClient.Groups.List(odataQuery); } else { result = GraphClient.Groups.ListNext(options.NextLink); } groups.AddRange(result.Select(g => g.ToPSADGroup())); options.NextLink = result.NextPageLink; } else { if (options.Mail != null) { odataQuery = new Rest.Azure.OData.ODataQuery <ADGroup>(g => g.Mail == options.Mail); } else { odataQuery = new Rest.Azure.OData.ODataQuery <ADGroup>(g => g.DisplayName.StartsWith(options.SearchString)); } result = GraphClient.Groups.List(odataQuery.ToString()); groups.AddRange(result.Select(g => g.ToPSADGroup())); while (!string.IsNullOrEmpty(result.NextPageLink)) { result = GraphClient.Groups.ListNext(result.NextPageLink); groups.AddRange(result.Select(g => g.ToPSADGroup())); } } } return(groups); }