public override void ExecuteCmdlet() { if (ShouldProcess(AccountName, NewMediaServiceWhatIfMessage)) { try { var mediaService = MediaServicesManagementClient.MediaService.Get(ResourceGroupName, AccountName); if (mediaService != null) { throw new ArgumentException(string.Format(Properties.Resource.InvalidMediaServiceAccount, AccountName, SubscrptionName, ResourceGroupName)); } } catch (ApiErrorException exception) { if (exception.Response != null && exception.Response.StatusCode.Equals(HttpStatusCode.NotFound)) { var restMediaService = new RestMediaService( Location, Tags.ToDictionaryTags(), null, null, MediaServiceType); switch (ParameterSetName) { case PrimaryStorageAccountParamSet: restMediaService.StorageAccounts = new List <StorageAccount> { new StorageAccount { Id = StorageAccountId, IsPrimary = true } }; break; case StorageAccountsParamSet: if (StorageAccounts.Count(x => x.IsPrimary.HasValue && x.IsPrimary.Value) != 1) { throw new ArgumentException(Properties.Resource.OnlyOnePrimaryStorageAccountAllowed); } restMediaService.StorageAccounts = StorageAccounts.Select(x => x.ToStorageAccount()).ToList(); break; default: throw new ArgumentException("Bad ParameterSet Name"); } var mediaServiceCreated = MediaServicesManagementClient.MediaService.Create(ResourceGroupName, AccountName, restMediaService); WriteObject(mediaServiceCreated.ToPSMediaService(), true); } else { throw; } } } }