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;
                    }
                }
            }
        }