public override void ExecuteCmdlet() { ExecutionBlock(() => { if (Job != null) { Vault = new AzureRMBackupVault(Job.ResourceGroupName, Job.ResourceName, Job.Location); } InitializeAzureBackupCmdlet(Vault); if (Job != null) { JobId = Job.InstanceId; } if (Type != null) { Type = AzureBackupJobHelper.GetTypeForService(Type); } // validations if (!From.HasValue) { if (To.HasValue) { throw new Exception(Resources.AzureBackupJobArguementException); } WriteDebug(Resources.SettingStartTime); From = AzureBackupJobHelper.MinimumAllowedDate; } if (To.HasValue && To.Value > From.Value) { // everything is good. don't do anything } else if (To.HasValue && To.Value <= From.Value) { throw new Exception(Resources.TimeFilterNotCorrect); } else { if (From != AzureBackupJobHelper.MinimumAllowedDate) { WriteDebug(Resources.EndTimeNotSet); To = DateTime.Now; } else { WriteDebug(Resources.SettingEndTime); To = AzureBackupJobHelper.MinimumAllowedDate; } } From = TimeZoneInfo.ConvertTimeToUtc(From.Value); To = TimeZoneInfo.ConvertTimeToUtc(To.Value); // if user hasn't specified any filters, then default filter fetches // all jobs that were created in last 24 hours. if (From == AzureBackupJobHelper.MinimumAllowedDate && To == AzureBackupJobHelper.MinimumAllowedDate && string.IsNullOrEmpty(Operation) && string.IsNullOrEmpty(Status) && string.IsNullOrEmpty(Type) && string.IsNullOrEmpty(JobId)) { From = DateTime.UtcNow.AddDays(-1); To = DateTime.UtcNow; } DateTimeFormatInfo format = new CultureInfo("en-US").DateTimeFormat; WriteDebug(String.Format(Resources.StartTimeFilter, System.Uri.EscapeDataString(From.Value.ToString("yyyy-MM-dd hh:mm:ss tt", format)))); WriteDebug(String.Format(Resources.EndTimeFilter, System.Uri.EscapeDataString(To.Value.ToString("yyyy-MM-dd hh:mm:ss tt", format)))); WriteDebug(String.Format(Resources.OperationFilter, Operation)); WriteDebug(String.Format(Resources.StatusFilter, Status)); WriteDebug(String.Format(Resources.TypeFilter, Type)); WriteDebug(String.Format(Resources.JobIdFilter, JobId)); Mgmt.CSMJobQueryObject queryParams = new Mgmt.CSMJobQueryObject() { StartTime = From.Value.ToString("yyyy-MM-dd hh:mm:ss tt", format), EndTime = To.Value.ToString("yyyy-MM-dd hh:mm:ss tt", format), Operation = Operation, Status = Status, WorkloadType = Type, Name = JobId }; var jobsList = AzureBackupClient.ListJobs(Vault.ResourceGroupName, Vault.Name, queryParams); List <AzureRMBackupJob> retrievedJobs = new List <AzureRMBackupJob>(); foreach (Mgmt.CSMJobResponse serviceJob in jobsList) { // TODO: Initialize vault from Job object when vault is made optional retrievedJobs.Add(new AzureRMBackupJob(Vault, serviceJob.Properties, serviceJob.Name)); } WriteDebug(String.Format(Resources.JobRetrieved, retrievedJobs.Count())); if (retrievedJobs.Count == 1) { WriteObject(retrievedJobs.First()); } else { WriteObject(retrievedJobs); } }); }