public Registry UpdateRegistry(
            string resourceGroupName,
            string registryName,
            bool?adminUserEnabled,
            string sku = null,
            string storageAccountId           = null,
            PSNetworkRuleSet networkRuleSet   = null,
            IDictionary <string, string> tags = null)
        {
            var parameters = new RegistryUpdateParameters()
            {
                AdminUserEnabled = adminUserEnabled
            };

            if (sku != null)
            {
                parameters.Sku = new Management.ContainerRegistry.Models.Sku(sku);
            }

            if (tags != null)
            {
                parameters.Tags = tags;
            }

            if (networkRuleSet != null)
            {
                parameters.NetworkRuleSet = networkRuleSet.GetNetworkRuleSet();
            }

            return(_client.Registries.Update(resourceGroupName, registryName, parameters));
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Update Storage Account NetworkRule"))
            {
                if (IPRule == null && VirtualNetworkRule == null && bypass == null && defaultAction == null)
                {
                    throw new System.ArgumentNullException("IPRules, VirtualNetworkRules, Bypass, DefaultAction", "Request must specify an account NetworkRule property to update.");
                }

                var storageAccount = this.StorageClient.StorageAccounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                NetworkRuleSet storageACL = storageAccount.NetworkRuleSet;

                if (storageACL == null)
                {
                    storageACL = new NetworkRuleSet();
                }

                PSNetworkRuleSet psNetworkRule = PSNetworkRuleSet.ParsePSNetworkRule(storageACL);

                if (isIpRuleSet)
                {
                    psNetworkRule.IpRules = IPRule;
                }

                if (isNetworkRuleSet)
                {
                    psNetworkRule.VirtualNetworkRules = VirtualNetworkRule;
                }

                if (bypass != null)
                {
                    psNetworkRule.Bypass = bypass;
                }

                if (defaultAction != null)
                {
                    psNetworkRule.DefaultAction = defaultAction.Value;
                }

                StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                updateParameters.NetworkRuleSet = PSNetworkRuleSet.ParseStorageNetworkRule(psNetworkRule);

                var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    updateParameters);

                storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

                WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkRuleSet));
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Update Cognitive Services Account NetworkRule"))
            {
                if (IpRule == null && VirtualNetworkRule == null && defaultAction == null)
                {
                    throw new System.ArgumentNullException("IpRules, VirtualNetworkRules, DefaultAction", "Request must specify an account NetworkRule property to update.");
                }

                var account = this.CognitiveServicesClient.Accounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                NetworkRuleSet accountACL = account.Properties.NetworkAcls;

                if (accountACL == null)
                {
                    accountACL = new NetworkRuleSet();
                    accountACL.DefaultAction = NetworkRuleAction.Deny;
                }

                PSNetworkRuleSet psNetworkRule = PSNetworkRuleSet.Create(accountACL);

                if (isIpRuleSet)
                {
                    psNetworkRule.IpRules = IpRule;
                }

                if (isNetworkRuleSet)
                {
                    psNetworkRule.VirtualNetworkRules = VirtualNetworkRule;
                }

                if (defaultAction != null)
                {
                    psNetworkRule.DefaultAction = defaultAction.Value;
                }

                var properties = new CognitiveServicesAccountProperties();
                properties.NetworkAcls = psNetworkRule.ToNetworkRuleSet();
                this.CognitiveServicesClient.Accounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    new CognitiveServicesAccount()
                {
                    Properties = properties
                }
                    );

                account = this.CognitiveServicesClient.Accounts.GetProperties(this.ResourceGroupName, this.Name);

                WriteObject(PSNetworkRuleSet.Create(account.Properties.NetworkAcls));
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            var storageAccount = this.StorageClient.StorageAccounts.GetProperties(
                this.ResourceGroupName,
                this.Name);

            if (storageAccount.NetworkAcls != null)
            {
                WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkAcls));
            }
        }
Esempio n. 5
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            var account = this.CognitiveServicesClient.Accounts.GetProperties(
                this.ResourceGroupName,
                this.Name);

            if (account != null && account.Properties.NetworkAcls != null)
            {
                WriteObject(PSNetworkRuleSet.Create(account.Properties.NetworkAcls));
            }
        }
Esempio n. 6
0
 public PSContainerRegistry(Registry registry)
 {
     Id = registry?.Id;
     ResourceGroupName = ConversionUtilities.ParseResourceGroupFromId(Id);
     Name               = registry?.Name;
     Type               = registry?.Type;
     Location           = registry?.Location;
     Tags               = registry?.Tags;
     SkuName            = registry?.Sku?.Name;
     SkuTier            = registry?.Sku?.Tier;
     LoginServer        = registry?.LoginServer;
     CreationDate       = registry?.CreationDate;
     ProvisioningState  = registry?.ProvisioningState;
     AdminUserEnabled   = registry?.AdminUserEnabled;
     StorageAccountName = ConversionUtilities.ParseStorageAccountFromId(registry?.StorageAccount?.Id);
     NetworkRuleSet     = new PSNetworkRuleSet(registry?.NetworkRuleSet);
 }
Esempio n. 7
0
        public override void ExecuteCmdlet()
        {
            if (this.IsParameterBound(c => c.InputObject))
            {
                if (this.IsParameterBound(c => c.DefaultAction))
                {
                    InputObject.DefaultAction = DefaultAction;
                }
                InputObject.AddNetworkRules(NetworkRule);
            }
            else
            {
                InputObject = new PSNetworkRuleSet(DefaultAction, NetworkRule);
            }

            WriteObject(InputObject);
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            CheckNameAvailabilityResult checkNameAvailabilityResult = this.StorageClient.StorageAccounts.CheckNameAvailability(this.Name);

            if (!checkNameAvailabilityResult.NameAvailable.Value)
            {
                throw new System.ArgumentException(checkNameAvailabilityResult.Message, "Name");
            }

            StorageAccountCreateParameters createParameters = new StorageAccountCreateParameters()
            {
                Location = this.Location,
                Sku      = new Sku(ParseSkuName(this.SkuName)),
                Tags     = TagsConversionHelper.CreateTagDictionary(Tag, validate: true),
            };

            if (this.CustomDomainName != null)
            {
                createParameters.CustomDomain = new CustomDomain()
                {
                    Name         = CustomDomainName,
                    UseSubDomain = UseSubDomain
                };
            }
            else if (UseSubDomain != null)
            {
                throw new System.ArgumentException(string.Format("UseSubDomain must be set together with CustomDomainName."));
            }

            if (Kind != null)
            {
                createParameters.Kind = ParseAccountKind(Kind);
            }

            if (this.EnableEncryptionService != null)
            {
                createParameters.Encryption           = ParseEncryption(EnableEncryptionService);
                createParameters.Encryption.KeySource = "Microsoft.Storage";
            }

            if (this.AccessTier != null)
            {
                createParameters.AccessTier = ParseAccessTier(AccessTier);
            }
            if (enableHttpsTrafficOnly != null)
            {
                createParameters.EnableHttpsTrafficOnly = enableHttpsTrafficOnly;
            }

            if (AssignIdentity.IsPresent)
            {
                createParameters.Identity = new Identity();
            }
            if (NetworkRuleSet != null)
            {
                createParameters.NetworkAcls = PSNetworkRuleSet.ParseStorageNetworkRule(NetworkRuleSet);
            }

            var createAccountResponse = this.StorageClient.StorageAccounts.Create(
                this.ResourceGroupName,
                this.Name,
                createParameters);

            var storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

            this.WriteStorageAccount(storageAccount);
        }
Esempio n. 9
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            CheckNameAvailabilityResult checkNameAvailabilityResult = this.StorageClient.StorageAccounts.CheckNameAvailability(this.Name);

            if (!checkNameAvailabilityResult.NameAvailable.Value)
            {
                throw new System.ArgumentException(checkNameAvailabilityResult.Message, "Name");
            }

            StorageAccountCreateParameters createParameters = new StorageAccountCreateParameters()
            {
                Location = this.Location,
                Sku      = new Sku(this.SkuName),
                Tags     = TagsConversionHelper.CreateTagDictionary(Tag, validate: true),
            };

            if (this.CustomDomainName != null)
            {
                createParameters.CustomDomain = new CustomDomain()
                {
                    Name             = CustomDomainName,
                    UseSubDomainName = UseSubDomain
                };
            }
            else if (UseSubDomain != null)
            {
                throw new System.ArgumentException(string.Format("UseSubDomain must be set together with CustomDomainName."));
            }

            if (kind != null)
            {
                createParameters.Kind = kind;
            }

            if (this.AccessTier != null)
            {
                createParameters.AccessTier = ParseAccessTier(AccessTier);
            }
            if (enableHttpsTrafficOnly != null)
            {
                createParameters.EnableHttpsTrafficOnly = enableHttpsTrafficOnly;
            }

            if (AssignIdentity.IsPresent)
            {
                createParameters.Identity = new Identity()
                {
                    Type = IdentityType.SystemAssigned
                };
            }
            if (NetworkRuleSet != null)
            {
                createParameters.NetworkRuleSet = PSNetworkRuleSet.ParseStorageNetworkRule(NetworkRuleSet);
            }
            if (enableHierarchicalNamespace != null)
            {
                createParameters.IsHnsEnabled = enableHierarchicalNamespace;
            }
            if (enableAzureActiveDirectoryDomainServicesForFile != null || enableActiveDirectoryDomainServicesForFile != null)
            {
                createParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                if (enableAzureActiveDirectoryDomainServicesForFile != null && enableAzureActiveDirectoryDomainServicesForFile.Value)
                {
                    createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.AADDS;
                }
                else if (enableActiveDirectoryDomainServicesForFile != null && enableActiveDirectoryDomainServicesForFile.Value)
                {
                    if (string.IsNullOrEmpty(this.ActiveDirectoryDomainName) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryNetBiosDomainName) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryForestName) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryDomainGuid) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryDomainSid) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryAzureStorageSid)
                        )
                    {
                        throw new System.ArgumentNullException("ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid",
                                                               "To enable ActiveDirectoryDomainServicesForFile, user must specify all of: ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid.");
                    }
                    createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions   = DirectoryServiceOptions.AD;
                    createParameters.AzureFilesIdentityBasedAuthentication.ActiveDirectoryProperties = new ActiveDirectoryProperties()
                    {
                        DomainName        = this.ActiveDirectoryDomainName,
                        NetBiosDomainName = this.ActiveDirectoryNetBiosDomainName,
                        ForestName        = this.ActiveDirectoryForestName,
                        DomainGuid        = this.ActiveDirectoryDomainGuid,
                        DomainSid         = this.ActiveDirectoryDomainSid,
                        AzureStorageSid   = this.ActiveDirectoryAzureStorageSid
                    };
                }
                else
                {
                    createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.None;
                }
            }
            if (this.EnableLargeFileShare.IsPresent)
            {
                createParameters.LargeFileSharesState = LargeFileSharesState.Enabled;
            }
            if (this.EncryptionKeyTypeForQueue != null || this.EncryptionKeyTypeForTable != null || this.RequireInfrastructureEncryption.IsPresent)
            {
                createParameters.Encryption           = new Encryption();
                createParameters.Encryption.KeySource = KeySource.MicrosoftStorage;
                if (this.EncryptionKeyTypeForQueue != null || this.EncryptionKeyTypeForTable != null)
                {
                    createParameters.Encryption.Services = new EncryptionServices();
                    if (this.EncryptionKeyTypeForQueue != null)
                    {
                        createParameters.Encryption.Services.Queue = new EncryptionService(keyType: this.EncryptionKeyTypeForQueue);
                    }
                    if (this.EncryptionKeyTypeForTable != null)
                    {
                        createParameters.Encryption.Services.Table = new EncryptionService(keyType: this.EncryptionKeyTypeForTable);
                    }
                }
                if (this.RequireInfrastructureEncryption.IsPresent)
                {
                    createParameters.Encryption.RequireInfrastructureEncryption = true;
                    if (createParameters.Encryption.Services is null)
                    {
                        createParameters.Encryption.Services      = new EncryptionServices();
                        createParameters.Encryption.Services.Blob = new EncryptionService();
                    }
                }
            }
            if (this.minimumTlsVersion != null)
            {
                createParameters.MinimumTlsVersion = this.minimumTlsVersion;
            }
            if (this.allowBlobPublicAccess != null)
            {
                createParameters.AllowBlobPublicAccess = this.allowBlobPublicAccess;
            }
            if (this.RoutingChoice != null || this.publishMicrosoftEndpoint != null || this.publishInternetEndpoint != null)
            {
                createParameters.RoutingPreference = new RoutingPreference(this.RoutingChoice, this.publishMicrosoftEndpoint, this.publishInternetEndpoint);
            }
            if (allowSharedKeyAccess != null)
            {
                createParameters.AllowSharedKeyAccess = allowSharedKeyAccess;
            }

            var createAccountResponse = this.StorageClient.StorageAccounts.Create(
                this.ResourceGroupName,
                this.Name,
                createParameters);

            var storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

            this.WriteStorageAccount(storageAccount);
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Set Storage Account"))
            {
                if (this.force || this.AccessTier == null || ShouldContinue("Changing the access tier may result in additional charges. See (http://go.microsoft.com/fwlink/?LinkId=786482) to learn more.", ""))
                {
                    StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                    if (this.SkuName != null)
                    {
                        updateParameters.Sku = new Sku(this.SkuName);
                    }

                    if (this.Tag != null)
                    {
                        Dictionary <string, string> tagDictionary = TagsConversionHelper.CreateTagDictionary(Tag, validate: true);
                        updateParameters.Tags = tagDictionary ?? new Dictionary <string, string>();
                    }

                    if (this.CustomDomainName != null)
                    {
                        updateParameters.CustomDomain = new CustomDomain()
                        {
                            Name             = CustomDomainName,
                            UseSubDomainName = UseSubDomain
                        };
                    }
                    else if (UseSubDomain != null)
                    {
                        throw new System.ArgumentException(string.Format("UseSubDomain must be set together with CustomDomainName."));
                    }

                    if (this.AccessTier != null)
                    {
                        updateParameters.AccessTier = ParseAccessTier(AccessTier);
                    }
                    if (enableHttpsTrafficOnly != null)
                    {
                        updateParameters.EnableHttpsTrafficOnly = enableHttpsTrafficOnly;
                    }

                    if (AssignIdentity.IsPresent || this.UserAssignedIdentityId != null || this.IdentityType != null)
                    {
                        updateParameters.Identity = new Identity()
                        {
                            Type = StorageModels.IdentityType.SystemAssigned
                        };
                        if (this.IdentityType != null)
                        {
                            updateParameters.Identity.Type = GetIdentityTypeString(this.IdentityType);
                        }
                        if (this.UserAssignedIdentityId != null)
                        {
                            if (updateParameters.Identity.Type != StorageModels.IdentityType.UserAssigned && updateParameters.Identity.Type != StorageModels.IdentityType.SystemAssignedUserAssigned)
                            {
                                throw new ArgumentException("UserAssignIdentityId should only be specified when AssignIdentityType is UserAssigned or SystemAssignedUserAssigned.", "UserAssignIdentityId");
                            }
                            updateParameters.Identity.UserAssignedIdentities = new Dictionary <string, UserAssignedIdentity>();
                            updateParameters.Identity.UserAssignedIdentities.Add(this.UserAssignedIdentityId, new UserAssignedIdentity());

                            var accountProperties = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                            if (accountProperties.Identity != null && accountProperties.Identity.UserAssignedIdentities != null && accountProperties.Identity.UserAssignedIdentities.Count > 0)
                            {
                                foreach (var uid in accountProperties.Identity.UserAssignedIdentities)
                                {
                                    if (!uid.Key.Equals(this.UserAssignedIdentityId, StringComparison.OrdinalIgnoreCase))
                                    {
                                        updateParameters.Identity.UserAssignedIdentities.Add(uid.Key, null);
                                    }
                                }
                            }
                        }
                    }

                    if (StorageEncryption || ParameterSetName == KeyvaultEncryptionParameterSet || this.KeyVaultUserAssignedIdentityId != null)
                    {
                        if (ParameterSetName == KeyvaultEncryptionParameterSet)
                        {
                            keyvaultEncryption = true;
                        }
                        updateParameters.Encryption = ParseEncryption(StorageEncryption, keyvaultEncryption, KeyName, KeyVersion, KeyVaultUri);
                        if (this.KeyVaultUserAssignedIdentityId != null)
                        {
                            updateParameters.Encryption.EncryptionIdentity = new EncryptionIdentity();
                            updateParameters.Encryption.EncryptionIdentity.EncryptionUserAssignedIdentity = this.KeyVaultUserAssignedIdentityId;
                        }
                    }

                    if (NetworkRuleSet != null)
                    {
                        updateParameters.NetworkRuleSet = PSNetworkRuleSet.ParseStorageNetworkRule(NetworkRuleSet);
                    }

                    if (UpgradeToStorageV2.IsPresent)
                    {
                        updateParameters.Kind = Kind.StorageV2;
                    }
                    if (enableAzureActiveDirectoryDomainServicesForFile != null)
                    {
                        if (enableAzureActiveDirectoryDomainServicesForFile.Value) // enable AADDS
                        {
                            //if user want to enable AADDS, must first disable AD
                            var originStorageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                            if (originStorageAccount.AzureFilesIdentityBasedAuthentication != null &&
                                originStorageAccount.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions == DirectoryServiceOptions.AD)
                            {
                                throw new System.ArgumentException("The Storage account already enabled ActiveDirectoryDomainServicesForFile, please disable it by run this cmdlets with \"-EnableActiveDirectoryDomainServicesForFile $false\" before enable AzureActiveDirectoryDomainServicesForFile.");
                            }
                            updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                            updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.AADDS;
                        }
                        else //Disable AADDS
                        {
                            // Only disable AADDS; else keep unchanged
                            var originStorageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                            if (originStorageAccount.AzureFilesIdentityBasedAuthentication == null ||
                                originStorageAccount.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions == DirectoryServiceOptions.AADDS)
                            {
                                updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                                updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.None;
                            }
                            else
                            {
                                updateParameters.AzureFilesIdentityBasedAuthentication = originStorageAccount.AzureFilesIdentityBasedAuthentication;
                            }
                        }
                    }
                    if (enableActiveDirectoryDomainServicesForFile != null)
                    {
                        if (enableActiveDirectoryDomainServicesForFile.Value) // Enable AD
                        {
                            if (string.IsNullOrEmpty(this.ActiveDirectoryDomainName) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryNetBiosDomainName) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryForestName) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryDomainGuid) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryDomainSid) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryAzureStorageSid)
                                )
                            {
                                throw new System.ArgumentNullException("ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid",
                                                                       "To enable ActiveDirectoryDomainServicesForFile, user must specify all of: ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid.");
                            }

                            //if user want to enable AD, must first disable AADDS
                            var originStorageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                            if (originStorageAccount.AzureFilesIdentityBasedAuthentication != null &&
                                originStorageAccount.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions == DirectoryServiceOptions.AADDS)
                            {
                                throw new System.ArgumentException("The Storage account already enabled AzureActiveDirectoryDomainServicesForFile, please disable it by run this cmdlets with \"-EnableAzureActiveDirectoryDomainServicesForFile $false\" before enable ActiveDirectoryDomainServicesForFile.");
                            }

                            updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                            updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions   = DirectoryServiceOptions.AD;
                            updateParameters.AzureFilesIdentityBasedAuthentication.ActiveDirectoryProperties = new ActiveDirectoryProperties()
                            {
                                DomainName        = this.ActiveDirectoryDomainName,
                                NetBiosDomainName = this.ActiveDirectoryNetBiosDomainName,
                                ForestName        = this.ActiveDirectoryForestName,
                                DomainGuid        = this.ActiveDirectoryDomainGuid,
                                DomainSid         = this.ActiveDirectoryDomainSid,
                                AzureStorageSid   = this.ActiveDirectoryAzureStorageSid
                            };
                        }
                        else // Disable AD
                        {
                            if (!string.IsNullOrEmpty(this.ActiveDirectoryDomainName) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryNetBiosDomainName) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryForestName) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryDomainGuid) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryDomainSid) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryAzureStorageSid)
                                )
                            {
                                throw new System.ArgumentException("To Disable ActiveDirectoryDomainServicesForFile, user can't specify any of: ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid.");
                            }

                            // Only disable AD; else keep unchanged
                            var originStorageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                            if (originStorageAccount.AzureFilesIdentityBasedAuthentication == null ||
                                originStorageAccount.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions == DirectoryServiceOptions.AD)
                            {
                                updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                                updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.None;
                            }
                            else
                            {
                                updateParameters.AzureFilesIdentityBasedAuthentication = originStorageAccount.AzureFilesIdentityBasedAuthentication;
                            }
                        }
                    }
                    if (this.DefaultSharePermission != null)
                    {
                        if (updateParameters.AzureFilesIdentityBasedAuthentication == null)
                        {
                            updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                        }
                        updateParameters.AzureFilesIdentityBasedAuthentication.DefaultSharePermission = this.DefaultSharePermission;
                    }
                    if (this.EnableLargeFileShare.IsPresent)
                    {
                        updateParameters.LargeFileSharesState = LargeFileSharesState.Enabled;
                    }
                    if (this.minimumTlsVersion != null)
                    {
                        updateParameters.MinimumTlsVersion = this.minimumTlsVersion;
                    }
                    if (this.allowBlobPublicAccess != null)
                    {
                        updateParameters.AllowBlobPublicAccess = this.allowBlobPublicAccess;
                    }
                    if (this.RoutingChoice != null || this.publishMicrosoftEndpoint != null || this.publishInternetEndpoint != null)
                    {
                        updateParameters.RoutingPreference = new RoutingPreference(this.RoutingChoice, this.publishMicrosoftEndpoint, this.publishInternetEndpoint);
                    }
                    if (allowSharedKeyAccess != null)
                    {
                        updateParameters.AllowSharedKeyAccess = allowSharedKeyAccess;
                    }
                    if (SasExpirationPeriod != null && SasExpirationPeriod != TimeSpan.Zero)
                    {
                        updateParameters.SasPolicy = new SasPolicy(SasExpirationPeriod.ToString(@"d\.hh\:mm\:ss"));
                    }
                    if (keyExpirationPeriodInDay != null)
                    {
                        updateParameters.KeyPolicy = new KeyPolicy(keyExpirationPeriodInDay.Value);
                    }
                    if (allowCrossTenantReplication != null)
                    {
                        updateParameters.AllowCrossTenantReplication = allowCrossTenantReplication;
                    }

                    var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                        this.ResourceGroupName,
                        this.Name,
                        updateParameters);

                    var storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

                    WriteStorageAccount(storageAccount);
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Set Storage Account"))
            {
                if (this.force || this.AccessTier == null || ShouldContinue("Changing the access tier may result in additional charges. See (http://go.microsoft.com/fwlink/?LinkId=786482) to learn more.", ""))
                {
                    StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                    if (this.SkuName != null)
                    {
                        updateParameters.Sku = new Sku(this.SkuName);
                    }

                    if (this.Tag != null)
                    {
                        Dictionary <string, string> tagDictionary = TagsConversionHelper.CreateTagDictionary(Tag, validate: true);
                        updateParameters.Tags = tagDictionary ?? new Dictionary <string, string>();
                    }

                    if (this.CustomDomainName != null)
                    {
                        updateParameters.CustomDomain = new CustomDomain()
                        {
                            Name             = CustomDomainName,
                            UseSubDomainName = UseSubDomain
                        };
                    }
                    else if (UseSubDomain != null)
                    {
                        throw new System.ArgumentException(string.Format("UseSubDomain must be set together with CustomDomainName."));
                    }

                    if (this.AccessTier != null)
                    {
                        updateParameters.AccessTier = ParseAccessTier(AccessTier);
                    }
                    if (enableHttpsTrafficOnly != null)
                    {
                        updateParameters.EnableHttpsTrafficOnly = enableHttpsTrafficOnly;
                    }

                    if (AssignIdentity.IsPresent)
                    {
                        updateParameters.Identity = new Identity();
                    }

                    if (StorageEncryption || (ParameterSetName == KeyvaultEncryptionParameterSet))
                    {
                        if (ParameterSetName == KeyvaultEncryptionParameterSet)
                        {
                            keyvaultEncryption = true;
                        }
                        updateParameters.Encryption = ParseEncryption(StorageEncryption, keyvaultEncryption, KeyName, KeyVersion, KeyVaultUri);
                    }
                    if (NetworkRuleSet != null)
                    {
                        updateParameters.NetworkRuleSet = PSNetworkRuleSet.ParseStorageNetworkRule(NetworkRuleSet);
                    }

                    if (UpgradeToStorageV2.IsPresent)
                    {
                        updateParameters.Kind = Kind.StorageV2;
                    }

                    var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                        this.ResourceGroupName,
                        this.Name,
                        updateParameters);

                    var storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

                    WriteStorageAccount(storageAccount);
                }
            }
        }
Esempio n. 12
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Add Storage Account NetworkRules"))
            {
                var storageAccount = this.StorageClient.StorageAccounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                NetworkRuleSet storageACL = storageAccount.NetworkRuleSet;

                if (storageACL == null)
                {
                    storageACL = new NetworkRuleSet();
                }
                bool ruleChanged = false;

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (string s in VirtualNetworkResourceId)
                    {
                        bool ruleExist = false;
                        foreach (VirtualNetworkRule originRule in storageACL.VirtualNetworkRules)
                        {
                            if (originRule.VirtualNetworkResourceId.Equals(s, System.StringComparison.InvariantCultureIgnoreCase))
                            {
                                ruleExist = true;
                                WriteDebug(string.Format("Skip add VirtualNetworkRule as it already exist: {0}", s));
                                break;
                            }
                        }
                        if (!ruleExist)
                        {
                            VirtualNetworkRule rule = new VirtualNetworkRule(s);
                            storageACL.VirtualNetworkRules.Add(rule);
                            ruleChanged = true;
                        }
                    }
                    break;

                case IpRuleStringParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (string s in IPAddressOrRange)
                    {
                        bool ruleExist = false;
                        foreach (IPRule originRule in storageACL.IpRules)
                        {
                            if (originRule.IPAddressOrRange.Equals(s, System.StringComparison.InvariantCultureIgnoreCase))
                            {
                                ruleExist = true;
                                WriteDebug(string.Format("Skip add IPAddressOrRange as it already exist: {0}", s));
                                break;
                            }
                        }
                        if (!ruleExist)
                        {
                            IPRule rule = new IPRule(s);
                            storageACL.IpRules.Add(rule);
                            ruleChanged = true;
                        }
                    }
                    break;

                case ResourceAccessRuleStringParameterSet:
                    if (storageACL.ResourceAccessRules == null)
                    {
                        storageACL.ResourceAccessRules = new List <ResourceAccessRule>();
                    }
                    bool ResourceAccessruleExist = false;
                    foreach (ResourceAccessRule originRule in storageACL.ResourceAccessRules)
                    {
                        if (originRule.TenantId.Equals(this.TenantId, System.StringComparison.InvariantCultureIgnoreCase) &&
                            originRule.ResourceId.Equals(this.ResourceId, System.StringComparison.InvariantCultureIgnoreCase))
                        {
                            ResourceAccessruleExist = true;
                            WriteDebug(string.Format("Skip add ResourceAccessRule as it already exist, TenantId: {0}, ResourceId: {1}", this.TenantId, this.ResourceId));
                            break;
                        }
                    }
                    if (!ResourceAccessruleExist)
                    {
                        ResourceAccessRule rule = new ResourceAccessRule(this.TenantId, this.ResourceId);
                        storageACL.ResourceAccessRules.Add(rule);
                        ruleChanged = true;
                    }
                    break;

                case NetworkRuleObjectParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (PSVirtualNetworkRule rule in VirtualNetworkRule)
                    {
                        bool ruleExist = false;
                        foreach (VirtualNetworkRule originRule in storageACL.VirtualNetworkRules)
                        {
                            if (originRule.VirtualNetworkResourceId.Equals(rule.VirtualNetworkResourceId, System.StringComparison.InvariantCultureIgnoreCase))
                            {
                                ruleExist = true;
                                WriteDebug(string.Format("Skip add IPAddressOrRange as it already exist: {0}", rule.VirtualNetworkResourceId));
                                break;
                            }
                        }
                        if (!ruleExist)
                        {
                            storageACL.VirtualNetworkRules.Add(PSNetworkRuleSet.ParseStorageNetworkRuleVirtualNetworkRule(rule));
                            ruleChanged = true;
                        }
                    }
                    break;

                case ResourceAccessRuleObjectParameterSet:
                    if (storageACL.ResourceAccessRules == null)
                    {
                        storageACL.ResourceAccessRules = new List <ResourceAccessRule>();
                    }
                    foreach (PSResourceAccessRule rule in ResourceAccessRule)
                    {
                        bool ruleExist = false;
                        foreach (ResourceAccessRule originRule in storageACL.ResourceAccessRules)
                        {
                            if (originRule.TenantId.Equals(rule.TenantId, System.StringComparison.InvariantCultureIgnoreCase) &&
                                originRule.ResourceId.Equals(rule.ResourceId, System.StringComparison.InvariantCultureIgnoreCase))
                            {
                                ruleExist = true;
                                WriteDebug(string.Format("Skip add ResourceAccessRule as it already exist, TenantId: {0}, ResourceId: {1}", rule.TenantId, rule.ResourceId));
                                break;
                            }
                        }
                        if (!ruleExist)
                        {
                            storageACL.ResourceAccessRules.Add(PSNetworkRuleSet.ParseStorageResourceAccessRule(rule));
                            ruleChanged = true;
                        }
                    }
                    break;

                case IpRuleObjectParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (PSIpRule rule in IPRule)
                    {
                        bool ruleExist = false;
                        foreach (IPRule originRule in storageACL.IpRules)
                        {
                            if (originRule.IPAddressOrRange.Equals(rule.IPAddressOrRange, System.StringComparison.InvariantCultureIgnoreCase))
                            {
                                ruleExist = true;
                                WriteDebug(string.Format("Skip add IPAddressOrRange as it already exist: {0}", rule.IPAddressOrRange));
                                break;
                            }
                        }
                        if (!ruleExist)
                        {
                            storageACL.IpRules.Add(PSNetworkRuleSet.ParseStorageNetworkRuleIPRule(rule));
                            ruleChanged = true;
                        }
                    }
                    break;
                }

                if (ruleChanged)
                {
                    StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                    updateParameters.NetworkRuleSet = storageACL;

                    var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                        this.ResourceGroupName,
                        this.Name,
                        updateParameters);

                    storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                }

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                case NetworkRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkRuleSet).VirtualNetworkRules);
                    break;

                case IpRuleStringParameterSet:
                case IpRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkRuleSet).IpRules);
                    break;

                case ResourceAccessRuleStringParameterSet:
                case ResourceAccessRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkRuleSet).ResourceAccessRules);
                    break;
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Add Cognitive Services Account NetworkRules"))
            {
                var account = this.CognitiveServicesClient.Accounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                NetworkRuleSet accountACL = account.Properties.NetworkAcls;

                if (accountACL == null)
                {
                    accountACL = new NetworkRuleSet();
                }

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                    if (accountACL.VirtualNetworkRules == null)
                    {
                        accountACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }

                    foreach (string s in VirtualNetworkResourceId)
                    {
                        VirtualNetworkRule rule = new VirtualNetworkRule(s, null, true);
                        accountACL.VirtualNetworkRules.Add(rule);
                    }
                    break;

                case IpRuleStringParameterSet:
                    if (accountACL.IpRules == null)
                    {
                        accountACL.IpRules = new List <IpRule>();
                    }

                    foreach (string s in IpAddressOrRange)
                    {
                        IpRule rule = new IpRule(s);
                        accountACL.IpRules.Add(rule);
                    }
                    break;

                case NetworkRuleObjectParameterSet:
                    if (accountACL.VirtualNetworkRules == null)
                    {
                        accountACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }

                    foreach (PSVirtualNetworkRule rule in VirtualNetworkRule)
                    {
                        accountACL.VirtualNetworkRules.Add(rule.ToVirtualNetworkRule());
                    }
                    break;

                case IpRuleObjectParameterSet:
                    if (accountACL.IpRules == null)
                    {
                        accountACL.IpRules = new List <IpRule>();
                    }

                    foreach (PSIpRule rule in IpRule)
                    {
                        accountACL.IpRules.Add(rule.ToIpRule());
                    }
                    break;
                }

                var properties = new CognitiveServicesAccountProperties();
                properties.NetworkAcls = accountACL;
                this.CognitiveServicesClient.Accounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    new CognitiveServicesAccount()
                {
                    Properties = properties
                }
                    );

                account = this.CognitiveServicesClient.Accounts.GetProperties(this.ResourceGroupName, this.Name);

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                case NetworkRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.Create(account.Properties.NetworkAcls).VirtualNetworkRules);
                    break;

                case IpRuleStringParameterSet:
                case IpRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.Create(account.Properties.NetworkAcls).IpRules);
                    break;
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Set Storage Account"))
            {
                if (this.force || this.AccessTier == null || ShouldContinue("Changing the access tier may result in additional charges. See (http://go.microsoft.com/fwlink/?LinkId=786482) to learn more.", ""))
                {
                    StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                    if (this.SkuName != null)
                    {
                        updateParameters.Sku = new Sku(this.SkuName);
                    }

                    if (this.Tag != null)
                    {
                        Dictionary <string, string> tagDictionary = TagsConversionHelper.CreateTagDictionary(Tag, validate: true);
                        updateParameters.Tags = tagDictionary ?? new Dictionary <string, string>();
                    }

                    if (this.CustomDomainName != null)
                    {
                        updateParameters.CustomDomain = new CustomDomain()
                        {
                            Name             = CustomDomainName,
                            UseSubDomainName = UseSubDomain
                        };
                    }
                    else if (UseSubDomain != null)
                    {
                        throw new System.ArgumentException(string.Format("UseSubDomain must be set together with CustomDomainName."));
                    }

                    if (this.AccessTier != null)
                    {
                        updateParameters.AccessTier = ParseAccessTier(AccessTier);
                    }
                    if (enableHttpsTrafficOnly != null)
                    {
                        updateParameters.EnableHttpsTrafficOnly = enableHttpsTrafficOnly;
                    }

                    if (AssignIdentity.IsPresent)
                    {
                        updateParameters.Identity = new Identity();
                    }

                    if (StorageEncryption || (ParameterSetName == KeyvaultEncryptionParameterSet))
                    {
                        if (ParameterSetName == KeyvaultEncryptionParameterSet)
                        {
                            keyvaultEncryption = true;
                        }
                        updateParameters.Encryption = ParseEncryption(StorageEncryption, keyvaultEncryption, KeyName, KeyVersion, KeyVaultUri);
                    }
                    if (NetworkRuleSet != null)
                    {
                        updateParameters.NetworkRuleSet = PSNetworkRuleSet.ParseStorageNetworkRule(NetworkRuleSet);
                    }

                    if (UpgradeToStorageV2.IsPresent)
                    {
                        updateParameters.Kind = Kind.StorageV2;
                    }
                    if (enableAzureActiveDirectoryDomainServicesForFile != null)
                    {
                        if (enableAzureActiveDirectoryDomainServicesForFile.Value) // enable AADDS
                        {
                            //if user want to enable AADDS, must first disable AD
                            var originStorageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                            if (originStorageAccount.AzureFilesIdentityBasedAuthentication != null &&
                                originStorageAccount.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions == DirectoryServiceOptions.AD)
                            {
                                throw new System.ArgumentException("The Storage account already enabled ActiveDirectoryDomainServicesForFile, please disable it by run this cmdlets with \"-EnableActiveDirectoryDomainServicesForFile $false\" before enable AzureActiveDirectoryDomainServicesForFile.");
                            }
                            updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                            updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.AADDS;
                        }
                        else //Disable AADDS
                        {
                            // Only disable AADDS; else keep unchanged
                            var originStorageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                            if (originStorageAccount.AzureFilesIdentityBasedAuthentication == null ||
                                originStorageAccount.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions == DirectoryServiceOptions.AADDS)
                            {
                                updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                                updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.None;
                            }
                            else
                            {
                                updateParameters.AzureFilesIdentityBasedAuthentication = originStorageAccount.AzureFilesIdentityBasedAuthentication;
                            }
                        }
                    }
                    if (enableActiveDirectoryDomainServicesForFile != null)
                    {
                        if (enableActiveDirectoryDomainServicesForFile.Value) // Enable AD
                        {
                            if (string.IsNullOrEmpty(this.ActiveDirectoryDomainName) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryNetBiosDomainName) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryForestName) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryDomainGuid) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryDomainSid) ||
                                string.IsNullOrEmpty(this.ActiveDirectoryAzureStorageSid)
                                )
                            {
                                throw new System.ArgumentNullException("ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid",
                                                                       "To enable ActiveDirectoryDomainServicesForFile, user must specify all of: ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid.");
                            }

                            //if user want to enable AD, must first disable AADDS
                            var originStorageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                            if (originStorageAccount.AzureFilesIdentityBasedAuthentication != null &&
                                originStorageAccount.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions == DirectoryServiceOptions.AADDS)
                            {
                                throw new System.ArgumentException("The Storage account already enabled AzureActiveDirectoryDomainServicesForFile, please disable it by run this cmdlets with \"-EnableAzureActiveDirectoryDomainServicesForFile $false\" before enable ActiveDirectoryDomainServicesForFile.");
                            }

                            updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                            updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions   = DirectoryServiceOptions.AD;
                            updateParameters.AzureFilesIdentityBasedAuthentication.ActiveDirectoryProperties = new ActiveDirectoryProperties()
                            {
                                DomainName        = this.ActiveDirectoryDomainName,
                                NetBiosDomainName = this.ActiveDirectoryNetBiosDomainName,
                                ForestName        = this.ActiveDirectoryForestName,
                                DomainGuid        = this.ActiveDirectoryDomainGuid,
                                DomainSid         = this.ActiveDirectoryDomainSid,
                                AzureStorageSid   = this.ActiveDirectoryAzureStorageSid
                            };
                        }
                        else // Disable AD
                        {
                            if (!string.IsNullOrEmpty(this.ActiveDirectoryDomainName) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryNetBiosDomainName) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryForestName) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryDomainGuid) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryDomainSid) ||
                                !string.IsNullOrEmpty(this.ActiveDirectoryAzureStorageSid)
                                )
                            {
                                throw new System.ArgumentException("To Disable ActiveDirectoryDomainServicesForFile, user can't specify any of: ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid.");
                            }

                            // Only disable AD; else keep unchanged
                            var originStorageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);
                            if (originStorageAccount.AzureFilesIdentityBasedAuthentication == null ||
                                originStorageAccount.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions == DirectoryServiceOptions.AD)
                            {
                                updateParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                                updateParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.None;
                            }
                            else
                            {
                                updateParameters.AzureFilesIdentityBasedAuthentication = originStorageAccount.AzureFilesIdentityBasedAuthentication;
                            }
                        }
                    }
                    if (this.EnableLargeFileShare.IsPresent)
                    {
                        updateParameters.LargeFileSharesState = LargeFileSharesState.Enabled;
                    }

                    var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                        this.ResourceGroupName,
                        this.Name,
                        updateParameters);

                    var storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

                    WriteStorageAccount(storageAccount);
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Remove Storage Account Networkrules"))
            {
                var storageAccount = this.StorageClient.StorageAccounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                NetworkRuleSet storageACL = storageAccount.NetworkRuleSet;

                if (storageACL == null)
                {
                    storageACL = new NetworkRuleSet();
                }

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (string s in VirtualNetworkResourceId)
                    {
                        VirtualNetworkRule rule = new VirtualNetworkRule(s);
                        if (!RemoveNetworkRule(storageACL.VirtualNetworkRules, rule))
                        {
                            throw new ArgumentOutOfRangeException("VirtualNetworkResourceId", String.Format("Can't remove VirtualNetworkRule with specific ResourceId since not exist: {0}", rule.VirtualNetworkResourceId));
                        }
                    }
                    break;

                case IpRuleStringParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (string s in IPAddressOrRange)
                    {
                        IPRule rule = new IPRule(s);
                        if (!RemoveIpRule(storageACL.IpRules, rule))
                        {
                            throw new ArgumentOutOfRangeException("IPAddressOrRange", String.Format("Can't remove IpRule with specific IPAddressOrRange since not exist: {0}", rule.IPAddressOrRange));
                        }
                    }
                    break;

                case NetworkRuleObjectParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (PSVirtualNetworkRule rule in VirtualNetworkRule)
                    {
                        if (!RemoveNetworkRule(storageACL.VirtualNetworkRules, PSNetworkRuleSet.ParseStorageNetworkRuleVirtualNetworkRule(rule)))
                        {
                            throw new ArgumentOutOfRangeException("VirtualNetworkRule", String.Format("Can't remove VirtualNetworkRule with specific ResourceId since not exist: {0}", rule.VirtualNetworkResourceId));
                        }
                    }
                    break;

                case IpRuleObjectParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (PSIpRule rule in IPRule)
                    {
                        if (!RemoveIpRule(storageACL.IpRules, PSNetworkRuleSet.ParseStorageNetworkRuleIPRule(rule)))
                        {
                            throw new ArgumentOutOfRangeException("IPRule", String.Format("Can't remove IpRule with specific IPAddressOrRange since not exist: {0}", rule.IPAddressOrRange));
                        }
                    }
                    break;
                }

                StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                updateParameters.NetworkRuleSet = storageACL;

                var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    updateParameters);

                storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                case NetworkRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkRuleSet).VirtualNetworkRules);
                    break;

                case IpRuleStringParameterSet:
                case IpRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkRuleSet).IpRules);
                    break;
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            CheckNameAvailabilityResult checkNameAvailabilityResult = this.StorageClient.StorageAccounts.CheckNameAvailability(this.Name);

            if (!checkNameAvailabilityResult.NameAvailable.Value)
            {
                throw new System.ArgumentException(checkNameAvailabilityResult.Message, "Name");
            }

            StorageAccountCreateParameters createParameters = new StorageAccountCreateParameters()
            {
                Location = this.Location,
                Sku      = new Sku(this.SkuName),
                Tags     = TagsConversionHelper.CreateTagDictionary(Tag, validate: true),
            };

            if (this.CustomDomainName != null)
            {
                createParameters.CustomDomain = new CustomDomain()
                {
                    Name             = CustomDomainName,
                    UseSubDomainName = UseSubDomain
                };
            }
            else if (UseSubDomain != null)
            {
                throw new System.ArgumentException(string.Format("UseSubDomain must be set together with CustomDomainName."));
            }

            if (kind != null)
            {
                createParameters.Kind = kind;
            }

            if (this.AccessTier != null)
            {
                createParameters.AccessTier = ParseAccessTier(AccessTier);
            }
            if (enableHttpsTrafficOnly != null)
            {
                createParameters.EnableHttpsTrafficOnly = enableHttpsTrafficOnly;
            }

            if (AssignIdentity.IsPresent)
            {
                createParameters.Identity = new Identity();
            }
            if (NetworkRuleSet != null)
            {
                createParameters.NetworkRuleSet = PSNetworkRuleSet.ParseStorageNetworkRule(NetworkRuleSet);
            }
            if (enableHierarchicalNamespace != null)
            {
                createParameters.IsHnsEnabled = enableHierarchicalNamespace;
            }
            if (enableAzureActiveDirectoryDomainServicesForFile != null)
            {
                createParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                if (enableAzureActiveDirectoryDomainServicesForFile.Value)
                {
                    createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.AADDS;
                }
                else
                {
                    createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.None;
                }
            }
            if (this.EnableLargeFileShare.IsPresent)
            {
                createParameters.LargeFileSharesState = LargeFileSharesState.Enabled;
            }
            if (this.EncryptionKeyTypeForQueue != null || this.EncryptionKeyTypeForTable != null)
            {
                createParameters.Encryption           = new Encryption();
                createParameters.Encryption.KeySource = KeySource.MicrosoftStorage;
                createParameters.Encryption.Services  = new EncryptionServices();
                if (this.EncryptionKeyTypeForQueue != null)
                {
                    createParameters.Encryption.Services.Queue = new EncryptionService(keyType: this.EncryptionKeyTypeForQueue);
                }
                if (this.EncryptionKeyTypeForTable != null)
                {
                    createParameters.Encryption.Services.Table = new EncryptionService(keyType: this.EncryptionKeyTypeForTable);
                }
            }

            var createAccountResponse = this.StorageClient.StorageAccounts.Create(
                this.ResourceGroupName,
                this.Name,
                createParameters);

            var storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

            this.WriteStorageAccount(storageAccount);
        }
Esempio n. 17
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Remove Cognitive Services Account Networkrules"))
            {
                var account = this.CognitiveServicesClient.Accounts.Get(
                    this.ResourceGroupName,
                    this.Name);
                NetworkRuleSet accountACL = account.Properties.NetworkAcls;

                if (accountACL == null)
                {
                    accountACL = new NetworkRuleSet();
                    accountACL.DefaultAction = NetworkRuleAction.Deny;
                }

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                    if (accountACL.VirtualNetworkRules == null)
                    {
                        accountACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (string s in VirtualNetworkResourceId)
                    {
                        VirtualNetworkRule rule = new VirtualNetworkRule(s);
                        if (!RemoveNetworkRule(accountACL.VirtualNetworkRules, rule))
                        {
                            throw new ArgumentOutOfRangeException("VirtualNetworkResourceId", String.Format("Can't remove VirtualNetworkRule with specific ResourceId since not exist: {0}", rule.Id));
                        }
                    }
                    break;

                case IpRuleStringParameterSet:
                    if (accountACL.IpRules == null)
                    {
                        accountACL.IpRules = new List <IpRule>();
                    }
                    foreach (string s in IpAddressOrRange)
                    {
                        IpRule rule = new IpRule(s);
                        if (!RemoveIpRule(accountACL.IpRules, rule))
                        {
                            throw new ArgumentOutOfRangeException("IPAddressOrRange", String.Format("Can't remove IpRule with specific IPAddressOrRange since not exist: {0}", rule.Value));
                        }
                    }
                    break;

                case NetworkRuleObjectParameterSet:
                    if (accountACL.VirtualNetworkRules == null)
                    {
                        accountACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (PSVirtualNetworkRule rule in VirtualNetworkRule)
                    {
                        if (!RemoveNetworkRule(accountACL.VirtualNetworkRules, rule.ToVirtualNetworkRule()))
                        {
                            throw new ArgumentOutOfRangeException("VirtualNetworkRule", String.Format("Can't remove VirtualNetworkRule with specific ResourceId since not exist: {0}", rule.Id));
                        }
                    }
                    break;

                case IpRuleObjectParameterSet:
                    if (accountACL.IpRules == null)
                    {
                        accountACL.IpRules = new List <IpRule>();
                    }
                    foreach (PSIpRule rule in IpRule)
                    {
                        if (!RemoveIpRule(accountACL.IpRules, rule.ToIpRule()))
                        {
                            throw new ArgumentOutOfRangeException("IPRule", String.Format("Can't remove IpRule with specific IPAddressOrRange since not exist: {0}", rule.IpAddress));
                        }
                    }
                    break;
                }


                var properties = new AccountProperties();
                properties.NetworkAcls = accountACL;
                this.CognitiveServicesClient.Accounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    new Account()
                {
                    Properties = properties
                }
                    );

                account = this.CognitiveServicesClient.Accounts.Get(this.ResourceGroupName, this.Name);

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                case NetworkRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.Create(account.Properties.NetworkAcls).VirtualNetworkRules);
                    break;

                case IpRuleStringParameterSet:
                case IpRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.Create(account.Properties.NetworkAcls).IpRules);
                    break;
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            CheckNameAvailabilityResult checkNameAvailabilityResult = this.StorageClient.StorageAccounts.CheckNameAvailability(this.Name);

            if (!checkNameAvailabilityResult.NameAvailable.Value)
            {
                throw new System.ArgumentException(checkNameAvailabilityResult.Message, "Name");
            }

            StorageAccountCreateParameters createParameters = new StorageAccountCreateParameters()
            {
                Location = this.Location,
                Sku      = new Sku(this.SkuName),
                Tags     = TagsConversionHelper.CreateTagDictionary(Tag, validate: true),
            };

            if (this.CustomDomainName != null)
            {
                createParameters.CustomDomain = new CustomDomain()
                {
                    Name             = CustomDomainName,
                    UseSubDomainName = UseSubDomain
                };
            }
            else if (UseSubDomain != null)
            {
                throw new System.ArgumentException(string.Format("UseSubDomain must be set together with CustomDomainName."));
            }

            if (kind != null)
            {
                createParameters.Kind = kind;
            }

            if (this.AccessTier != null)
            {
                createParameters.AccessTier = ParseAccessTier(AccessTier);
            }
            if (enableHttpsTrafficOnly != null)
            {
                createParameters.EnableHttpsTrafficOnly = enableHttpsTrafficOnly;
            }

            if (AssignIdentity.IsPresent || this.UserAssignedIdentityId != null || this.IdentityType != null)
            {
                createParameters.Identity = new Identity()
                {
                    Type = StorageModels.IdentityType.SystemAssigned
                };
                if (this.IdentityType != null)
                {
                    createParameters.Identity.Type = GetIdentityTypeString(this.IdentityType);
                }
                if (this.UserAssignedIdentityId != null)
                {
                    if (createParameters.Identity.Type != StorageModels.IdentityType.UserAssigned && createParameters.Identity.Type != StorageModels.IdentityType.SystemAssignedUserAssigned)
                    {
                        throw new ArgumentException("UserAssignIdentityId should only be specified when AssignIdentityType is UserAssigned or SystemAssignedUserAssigned.", "UserAssignIdentityId");
                    }
                    createParameters.Identity.UserAssignedIdentities = new Dictionary <string, UserAssignedIdentity>();
                    createParameters.Identity.UserAssignedIdentities.Add(this.UserAssignedIdentityId, new UserAssignedIdentity());
                }
            }
            if (NetworkRuleSet != null)
            {
                createParameters.NetworkRuleSet = PSNetworkRuleSet.ParseStorageNetworkRule(NetworkRuleSet);
            }
            if (enableHierarchicalNamespace != null)
            {
                createParameters.IsHnsEnabled = enableHierarchicalNamespace;
            }
            if (enableAzureActiveDirectoryDomainServicesForFile != null || enableActiveDirectoryDomainServicesForFile != null)
            {
                createParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                if (enableAzureActiveDirectoryDomainServicesForFile != null && enableAzureActiveDirectoryDomainServicesForFile.Value)
                {
                    createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.AADDS;
                }
                else if (enableActiveDirectoryDomainServicesForFile != null && enableActiveDirectoryDomainServicesForFile.Value)
                {
                    if (string.IsNullOrEmpty(this.ActiveDirectoryDomainName) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryNetBiosDomainName) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryForestName) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryDomainGuid) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryDomainSid) ||
                        string.IsNullOrEmpty(this.ActiveDirectoryAzureStorageSid)
                        )
                    {
                        throw new System.ArgumentNullException("ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid",
                                                               "To enable ActiveDirectoryDomainServicesForFile, user must specify all of: ActiveDirectoryDomainName, ActiveDirectoryNetBiosDomainName, ActiveDirectoryForestName, ActiveDirectoryDomainGuid, ActiveDirectoryDomainSid, ActiveDirectoryAzureStorageSid.");
                    }
                    createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions   = DirectoryServiceOptions.AD;
                    createParameters.AzureFilesIdentityBasedAuthentication.ActiveDirectoryProperties = new ActiveDirectoryProperties()
                    {
                        DomainName        = this.ActiveDirectoryDomainName,
                        NetBiosDomainName = this.ActiveDirectoryNetBiosDomainName,
                        ForestName        = this.ActiveDirectoryForestName,
                        DomainGuid        = this.ActiveDirectoryDomainGuid,
                        DomainSid         = this.ActiveDirectoryDomainSid,
                        AzureStorageSid   = this.ActiveDirectoryAzureStorageSid,
                        SamAccountName    = this.ActiveDirectorySamAccountName,
                        AccountType       = this.ActiveDirectoryAccountType
                    };
                }
                else
                {
                    createParameters.AzureFilesIdentityBasedAuthentication.DirectoryServiceOptions = DirectoryServiceOptions.None;
                }
            }

            if (this.DefaultSharePermission != null)
            {
                if (enableAzureActiveDirectoryDomainServicesForFile == null && enableActiveDirectoryDomainServicesForFile == null)
                {
                    throw new ArgumentException("'-DefaultSharePermission' need be specify together with '-EnableAzureActiveDirectoryDomainServicesForFile' or '-EnableActiveDirectoryDomainServicesForFile'.");
                }
                if (createParameters.AzureFilesIdentityBasedAuthentication == null)
                {
                    createParameters.AzureFilesIdentityBasedAuthentication = new AzureFilesIdentityBasedAuthentication();
                }
                createParameters.AzureFilesIdentityBasedAuthentication.DefaultSharePermission = this.DefaultSharePermission;
            }
            if (this.EnableLargeFileShare.IsPresent)
            {
                createParameters.LargeFileSharesState = LargeFileSharesState.Enabled;
            }
            if (this.EncryptionKeyTypeForQueue != null || this.EncryptionKeyTypeForTable != null || this.RequireInfrastructureEncryption.IsPresent)
            {
                createParameters.Encryption           = new Encryption();
                createParameters.Encryption.KeySource = KeySource.MicrosoftStorage;
                if (this.EncryptionKeyTypeForQueue != null || this.EncryptionKeyTypeForTable != null)
                {
                    createParameters.Encryption.Services = new EncryptionServices();
                    if (this.EncryptionKeyTypeForQueue != null)
                    {
                        createParameters.Encryption.Services.Queue = new EncryptionService(keyType: this.EncryptionKeyTypeForQueue);
                    }
                    if (this.EncryptionKeyTypeForTable != null)
                    {
                        createParameters.Encryption.Services.Table = new EncryptionService(keyType: this.EncryptionKeyTypeForTable);
                    }
                }
                if (this.RequireInfrastructureEncryption.IsPresent)
                {
                    createParameters.Encryption.RequireInfrastructureEncryption = true;
                    if (createParameters.Encryption.Services is null)
                    {
                        createParameters.Encryption.Services      = new EncryptionServices();
                        createParameters.Encryption.Services.Blob = new EncryptionService();
                    }
                }
            }
            if (this.KeyVaultUri != null || this.KeyName != null || this.KeyVersion != null || this.KeyVaultUserAssignedIdentityId != null)
            {
                if ((this.KeyVaultUri != null && this.KeyName == null) || (this.KeyVaultUri == null && this.KeyName != null))
                {
                    throw new ArgumentException("KeyVaultUri and KeyName must be specify together");
                }

                if (this.KeyVersion != null && (this.KeyVaultUri == null || this.KeyName == null))
                {
                    throw new ArgumentException("KeyVersion can only be specified when specify KeyVaultUri and KeyName together.", "KeyVersion");
                }

                if (this.KeyVaultUserAssignedIdentityId != null && (this.KeyVaultUri == null || this.KeyName == null))
                {
                    throw new ArgumentException("KeyVaultUserAssignedIdentityId can only be specified when specify KeyVaultUri and KeyName together.", "KeyVaultUserAssignedIdentityId");
                }

                if (createParameters.Encryption == null)
                {
                    createParameters.Encryption           = new Encryption();
                    createParameters.Encryption.KeySource = KeySource.MicrosoftStorage;
                }

                if (createParameters.Encryption.Services is null)
                {
                    createParameters.Encryption.Services      = new EncryptionServices();
                    createParameters.Encryption.Services.Blob = new EncryptionService();
                }

                if (this.KeyVaultUri != null || this.KeyName != null || this.KeyVersion != null)
                {
                    createParameters.Encryption.KeySource          = KeySource.MicrosoftKeyvault;
                    createParameters.Encryption.KeyVaultProperties = new KeyVaultProperties(this.KeyName, this.KeyVersion, this.KeyVaultUri);
                }

                if (this.KeyVaultUserAssignedIdentityId != null)
                {
                    createParameters.Encryption.EncryptionIdentity = new EncryptionIdentity();
                    createParameters.Encryption.EncryptionIdentity.EncryptionUserAssignedIdentity = this.KeyVaultUserAssignedIdentityId;
                }
            }
            if (this.minimumTlsVersion != null)
            {
                createParameters.MinimumTlsVersion = this.minimumTlsVersion;
            }
            if (this.allowBlobPublicAccess != null)
            {
                createParameters.AllowBlobPublicAccess = this.allowBlobPublicAccess;
            }
            if (this.RoutingChoice != null || this.publishMicrosoftEndpoint != null || this.publishInternetEndpoint != null)
            {
                createParameters.RoutingPreference = new RoutingPreference(this.RoutingChoice, this.publishMicrosoftEndpoint, this.publishInternetEndpoint);
            }
            if (allowSharedKeyAccess != null)
            {
                createParameters.AllowSharedKeyAccess = allowSharedKeyAccess;
            }
            if (enableNfsV3 != null)
            {
                createParameters.EnableNfsV3 = enableNfsV3;
            }
            if (this.EdgeZone != null)
            {
                createParameters.ExtendedLocation = new ExtendedLocation()
                {
                    Type = ExtendedLocationTypes.EdgeZone,
                    Name = this.EdgeZone
                };
            }
            if (sasExpirationPeriod != null)
            {
                createParameters.SasPolicy = new SasPolicy(sasExpirationPeriod.Value.ToString(@"d\.hh\:mm\:ss"));
            }
            if (keyExpirationPeriodInDay != null)
            {
                createParameters.KeyPolicy = new KeyPolicy(keyExpirationPeriodInDay.Value);
            }
            if (allowCrossTenantReplication != null)
            {
                createParameters.AllowCrossTenantReplication = allowCrossTenantReplication;
            }
            if (this.PublicNetworkAccess != null)
            {
                createParameters.PublicNetworkAccess = this.PublicNetworkAccess;
            }
            if (EnableAccountLevelImmutability.IsPresent || this.immutabilityPeriod != null || this.ImmutabilityPolicyState != null)
            {
                if (!EnableAccountLevelImmutability.IsPresent)
                {
                    throw new ArgumentException("ImmutabilityPeriod, ImmutabilityPolicyState and AllowProtectedAppendWrite, can only be specified with -EnableAccountLevelImmutability.");
                }
                createParameters.ImmutableStorageWithVersioning         = new ImmutableStorageAccount();
                createParameters.ImmutableStorageWithVersioning.Enabled = this.EnableAccountLevelImmutability.IsPresent;
                if (this.immutabilityPeriod != null || this.ImmutabilityPolicyState != null)
                {
                    createParameters.ImmutableStorageWithVersioning.ImmutabilityPolicy = new AccountImmutabilityPolicyProperties();
                    createParameters.ImmutableStorageWithVersioning.ImmutabilityPolicy.ImmutabilityPeriodSinceCreationInDays = this.immutabilityPeriod;
                    createParameters.ImmutableStorageWithVersioning.ImmutabilityPolicy.State = this.ImmutabilityPolicyState;
                }
            }

            var createAccountResponse = this.StorageClient.StorageAccounts.Create(
                this.ResourceGroupName,
                this.Name,
                createParameters);

            var storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

            this.WriteStorageAccount(storageAccount);
        }
Esempio n. 19
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Add Cognitive Services Account NetworkRules"))
            {
                var account = this.CognitiveServicesClient.Accounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                NetworkRuleSet accountACL = account.Properties.NetworkAcls;

                if (accountACL == null)
                {
                    accountACL = new NetworkRuleSet();
                    // Deny is the default action value from server side,
                    // Specifically make default action Deny in client side as server side might want this value to be always provided in future.
                    accountACL.DefaultAction = NetworkRuleAction.Deny;
                }

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                    if (accountACL.VirtualNetworkRules == null)
                    {
                        accountACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }

                    foreach (string s in VirtualNetworkResourceId)
                    {
                        VirtualNetworkRule rule = new VirtualNetworkRule(s, null, true);
                        accountACL.VirtualNetworkRules.Add(rule);
                    }
                    break;

                case IpRuleStringParameterSet:
                    if (accountACL.IpRules == null)
                    {
                        accountACL.IpRules = new List <IpRule>();
                    }

                    foreach (string s in IpAddressOrRange)
                    {
                        IpRule rule = new IpRule(s);
                        accountACL.IpRules.Add(rule);
                    }
                    break;

                case NetworkRuleObjectParameterSet:
                    if (accountACL.VirtualNetworkRules == null)
                    {
                        accountACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }

                    foreach (PSVirtualNetworkRule rule in VirtualNetworkRule)
                    {
                        accountACL.VirtualNetworkRules.Add(rule.ToVirtualNetworkRule());
                    }
                    break;

                case IpRuleObjectParameterSet:
                    if (accountACL.IpRules == null)
                    {
                        accountACL.IpRules = new List <IpRule>();
                    }

                    foreach (PSIpRule rule in IpRule)
                    {
                        accountACL.IpRules.Add(rule.ToIpRule());
                    }
                    break;
                }

                var properties = new CognitiveServicesAccountProperties();
                properties.NetworkAcls = accountACL;
                this.CognitiveServicesClient.Accounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    new CognitiveServicesAccount()
                {
                    Properties = properties
                }
                    );

                account = this.CognitiveServicesClient.Accounts.GetProperties(this.ResourceGroupName, this.Name);

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                case NetworkRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.Create(account.Properties.NetworkAcls).VirtualNetworkRules);
                    break;

                case IpRuleStringParameterSet:
                case IpRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.Create(account.Properties.NetworkAcls).IpRules);
                    break;
                }
            }
        }
Esempio n. 20
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (ShouldProcess(this.Name, "Add Storage Account NetworkRules"))
            {
                var storageAccount = this.StorageClient.StorageAccounts.GetProperties(
                    this.ResourceGroupName,
                    this.Name);
                NetworkRuleSet storageACL = storageAccount.NetworkRuleSet;

                if (storageACL == null)
                {
                    storageACL = new NetworkRuleSet();
                }

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (string s in VirtualNetworkResourceId)
                    {
                        VirtualNetworkRule rule = new VirtualNetworkRule(s);
                        storageACL.VirtualNetworkRules.Add(rule);
                    }
                    break;

                case IpRuleStringParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (string s in IPAddressOrRange)
                    {
                        IPRule rule = new IPRule(s);
                        storageACL.IpRules.Add(rule);
                    }
                    break;

                case NetworkRuleObjectParameterSet:
                    if (storageACL.VirtualNetworkRules == null)
                    {
                        storageACL.VirtualNetworkRules = new List <VirtualNetworkRule>();
                    }
                    foreach (PSVirtualNetworkRule rule in VirtualNetworkRule)
                    {
                        storageACL.VirtualNetworkRules.Add(PSNetworkRuleSet.ParseStorageNetworkRuleVirtualNetworkRule(rule));
                    }
                    break;

                case IpRuleObjectParameterSet:
                    if (storageACL.IpRules == null)
                    {
                        storageACL.IpRules = new List <IPRule>();
                    }
                    foreach (PSIpRule rule in IPRule)
                    {
                        storageACL.IpRules.Add(PSNetworkRuleSet.ParseStorageNetworkRuleIPRule(rule));
                    }
                    break;
                }

                StorageAccountUpdateParameters updateParameters = new StorageAccountUpdateParameters();
                updateParameters.NetworkRuleSet = storageACL;

                var updatedAccountResponse = this.StorageClient.StorageAccounts.Update(
                    this.ResourceGroupName,
                    this.Name,
                    updateParameters);

                storageAccount = this.StorageClient.StorageAccounts.GetProperties(this.ResourceGroupName, this.Name);

                switch (ParameterSetName)
                {
                case NetWorkRuleStringParameterSet:
                case NetworkRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkRuleSet).VirtualNetworkRules);
                    break;

                case IpRuleStringParameterSet:
                case IpRuleObjectParameterSet:
                    WriteObject(PSNetworkRuleSet.ParsePSNetworkRule(storageAccount.NetworkRuleSet).IpRules);
                    break;
                }
            }
        }
Esempio n. 21
0
 public abstract bool SetSRPAzureStorageAccountKeyVault(string resourceGroupName, string accountName, string skuName = null, Hashtable[] tags = null, Constants.EncryptionSupportServiceEnum?enableEncryptionService = null, Constants.EncryptionSupportServiceEnum?disableEncryptionService = null, AccessTier?accessTier = null, string customDomain = null, bool?useSubdomain = null, bool?enableHttpsTrafficOnly = null, bool AssignIdentity = false, bool keyvaultEncryption = false, string keyName = null, string keyVersion = null, string keyVaultUri = null, PSNetworkRuleSet networkAcl = null);
Esempio n. 22
0
 public abstract bool CreateSRPAzureStorageAccount(string resourceGroupName, string accountName, string skuName, string location, Hashtable[] tags = null, Kind?kind = null, Constants.EncryptionSupportServiceEnum?enableEncryptionService = null, AccessTier?accessTier = null, string customDomain = null, bool?useSubdomain = null, bool?enableHttpsTrafficOnly = null, bool AssignIdentity = false, PSNetworkRuleSet networkAcl = null);