protected override void ProcessRecord() { var baseResourceList = new List <ProjectResource>(); switch (ParameterSetName) { case All: baseResourceList = _connection.Repository.Projects.FindAll(); break; case ByName: var projectNameList = ProjectName?.ToList().ConvertAll(s => s.ToLower()); //Multiple values but one of them is wildcarded, which is not an accepted scenario (I.e -MachineName WebServer*, Database1) if (projectNameList.Any(item => WildcardPattern.ContainsWildcardCharacters(item) && projectNameList.Count > 1)) { throw OctoposhExceptions.ParameterCollectionHasRegularAndWildcardItem("ProjectName"); } //Only 1 wildcarded value (ie -MachineName WebServer*) else if (projectNameList.Any(item => WildcardPattern.ContainsWildcardCharacters(item) && projectNameList.Count == 1)) { var pattern = new WildcardPattern(projectNameList.First()); baseResourceList = _connection.Repository.Projects.FindMany(x => pattern.IsMatch(x.Name.ToLower())); } //multiple non-wildcared values (i.e. -MachineName WebServer1,Database1) else if (!projectNameList.Any(item => WildcardPattern.ContainsWildcardCharacters(item))) { foreach (var name in projectNameList) { baseResourceList.Add(_connection.Repository.Projects.FindByName(name)); } } break; case ByProjectGroup: var projectGroupNameList = ProjectGroupName?.ToList().ConvertAll(s => s.ToLower()); //Multiple values but one of them is wildcarded, which is not an accepted scenario (I.e -MachineName WebServer*, Database1) if (projectGroupNameList.Any(item => WildcardPattern.ContainsWildcardCharacters(item) && projectGroupNameList.Count > 1)) { throw OctoposhExceptions.ParameterCollectionHasRegularAndWildcardItem("ProjectGroupName"); } //Only 1 wildcarded value (ie -MachineName WebServer*) else if (projectGroupNameList.Any(item => WildcardPattern.ContainsWildcardCharacters(item) && projectGroupNameList.Count == 1)) { var pattern = new WildcardPattern(projectGroupNameList.First()); var projectGroups = _connection.Repository.ProjectGroups.FindMany(x => pattern.IsMatch(x.Name.ToLower())); if (projectGroups.Count != 0) { foreach (var projectGroup in projectGroups) { baseResourceList.AddRange(_connection.Repository.ProjectGroups.GetProjects(projectGroup)); } } } //multiple non-wildcared values (i.e. -MachineName WebServer1,Database1) else if (!projectGroupNameList.Any(item => WildcardPattern.ContainsWildcardCharacters(item))) { var projectGroups = _connection.Repository.ProjectGroups.FindMany(x => projectGroupNameList.Contains(x.Name.ToLower())); if (projectGroups.Count != 0) { foreach (var projectGroup in projectGroups) { baseResourceList.AddRange(_connection.Repository.ProjectGroups.GetProjects(projectGroup)); } } } break; } if (ResourceOnly) { if (baseResourceList.Count == 1) { WriteObject(baseResourceList.FirstOrDefault(), true); } else { WriteObject(baseResourceList, true); } } else { var converter = new OutputConverter(); var outputList = converter.GetOctopusProject(baseResourceList); if (outputList.Count == 1) { WriteObject(outputList.FirstOrDefault(), true); } else { WriteObject(outputList, true); } } }