protected override IEnumerable <Models.Team> DoGetItems() { var team = GetParameter <object>(nameof(GetTeam.Team)); var current = GetParameter <bool>(nameof(GetTeam.Current)); var includeMembers = GetParameter <bool>(nameof(GetTeam.QueryMembership)); var includeSettings = GetParameter <bool>(nameof(GetTeam.IncludeSettings)); var defaultTeam = GetParameter <bool>(nameof(GetTeam.Default)); var(_, tp) = Cmdlet.GetCollectionAndProject(); var client = GetClient <TeamHttpClient>(); while (true) { switch (team) { case Guid g: { team = g.ToString(); continue; } case { } when defaultTeam: { Logger.Log("Get default team"); var projectClient = GetClient <ProjectHttpClient>(); var props = projectClient .GetProjectPropertiesAsync(tp.Id) .GetResult("Error retrieving project's default team"); team = props.Where(p => p.Name.Equals("System.Microsoft.TeamFoundation.Team.Default")) .FirstOrDefault()?.Value; defaultTeam = false; continue; } case null: case { } when current: { Logger.Log("Get currently connected team"); if (CurrentConnections.Team == null) { yield break; } team = CurrentConnections.Team.Id; current = false; continue; } case WebApiTeam t: { if (includeMembers || includeSettings) { team = t.Id.ToString(); continue; } yield return(CreateTeamObject(t)); yield break; } case string s when !s.IsWildcard(): { var result = client.GetTeamAsync(tp.Name, s) .GetResult($"Error getting team '{s}'"); yield return(CreateTeamObject(result, includeMembers, includeSettings)); yield break; } case string s: { foreach (var result in client.GetTeamsAsync(tp.Name) .GetResult($"Error getting team(s) '{s}'") .Where(t => t.Name.IsLike(s))) { yield return(CreateTeamObject(result, includeMembers, includeSettings)); } yield break; } default: { throw new ArgumentException($"Invalid or non-existent team {team}"); } } } }