/// <summary> /// Lists the tasks matching the specified filter options. /// </summary> /// <param name="options">The options to use when querying for tasks.</param> /// <returns>The tasks matching the specified filter options.</returns> public IEnumerable <PSCloudTask> ListTasks(ListTaskOptions options) { if (options == null) { throw new ArgumentNullException("options"); } // Get the single task matching the specified id if (!string.IsNullOrEmpty(options.TaskId)) { WriteVerbose(string.Format(Resources.GetTaskById, options.TaskId, options.JobId)); JobOperations jobOperations = options.Context.BatchOMClient.JobOperations; ODATADetailLevel getDetailLevel = new ODATADetailLevel(selectClause: options.Select, expandClause: options.Expand); CloudTask task = jobOperations.GetTask(options.JobId, options.TaskId, detailLevel: getDetailLevel, additionalBehaviors: options.AdditionalBehaviors); PSCloudTask psTask = new PSCloudTask(task); return(new PSCloudTask[] { psTask }); } // List tasks using the specified filter else { string jobId = options.Job == null ? options.JobId : options.Job.Id; string verboseLogString = null; ODATADetailLevel listDetailLevel = new ODATADetailLevel(selectClause: options.Select, expandClause: options.Expand); if (!string.IsNullOrEmpty(options.Filter)) { verboseLogString = string.Format(Resources.GetTaskByOData, jobId); listDetailLevel.FilterClause = options.Filter; } else { verboseLogString = string.Format(Resources.GetTaskNoFilter, jobId); } WriteVerbose(verboseLogString); IPagedEnumerable <CloudTask> tasks = null; if (options.Job != null) { tasks = options.Job.omObject.ListTasks(listDetailLevel, options.AdditionalBehaviors); } else { JobOperations jobOperations = options.Context.BatchOMClient.JobOperations; tasks = jobOperations.ListTasks(options.JobId, listDetailLevel, options.AdditionalBehaviors); } Func <CloudTask, PSCloudTask> mappingFunction = t => { return(new PSCloudTask(t)); }; return(PSPagedEnumerable <PSCloudTask, CloudTask> .CreateWithMaxCount( tasks, mappingFunction, options.MaxCount, () => WriteVerbose(string.Format(Resources.MaxCount, options.MaxCount)))); } }