/// <summary> /// Lists the Jobs matching the specified filter options /// </summary> /// <param name="options">The options to use when querying for Jobs</param> /// <returns>The Jobs matching the specified filter options</returns> public IEnumerable <PSCloudJob> ListJobs(ListJobOptions options) { if (options == null) { throw new ArgumentNullException("options"); } if (string.IsNullOrEmpty(options.WorkItemName) && options.WorkItem == null) { throw new ArgumentNullException(Resources.GBJ_NoWorkItem); } string wiName = options.WorkItem == null ? options.WorkItemName : options.WorkItem.Name; // Get the single Job matching the specified name if (!string.IsNullOrEmpty(options.JobName)) { WriteVerbose(string.Format(Resources.GBJ_GetByName, options.JobName, wiName)); using (IWorkItemManager wiManager = options.Context.BatchOMClient.OpenWorkItemManager()) { ICloudJob job = wiManager.GetJob(wiName, options.JobName, additionalBehaviors: options.AdditionalBehaviors); PSCloudJob psJob = new PSCloudJob(job); return(new PSCloudJob[] { psJob }); } } // List Jobs using the specified filter else { if (options.MaxCount <= 0) { options.MaxCount = Int32.MaxValue; } ODATADetailLevel odata = null; if (!string.IsNullOrEmpty(options.Filter)) { WriteVerbose(string.Format(Resources.GBJ_GetByOData, wiName, options.MaxCount)); odata = new ODATADetailLevel(filterClause: options.Filter); } else { WriteVerbose(string.Format(Resources.GBJ_GetNoFilter, wiName, options.MaxCount)); } using (IWorkItemManager wiManager = options.Context.BatchOMClient.OpenWorkItemManager()) { IEnumerableAsyncExtended <ICloudJob> jobs = wiManager.ListJobs(wiName, odata, options.AdditionalBehaviors); Func <ICloudJob, PSCloudJob> mappingFunction = j => { return(new PSCloudJob(j)); }; return(new PSAsyncEnumerable <PSCloudJob, ICloudJob>(jobs, mappingFunction).Take(options.MaxCount)); } } }