示例#1
0
        public override void ExecuteCmdlet()
        {
            if (this.IsParameterBound(c => c.WorkspaceObject))
            {
                this.ResourceGroupName = new ResourceIdentifier(this.WorkspaceObject.Id).ResourceGroupName;
                this.WorkspaceName     = this.WorkspaceObject.Name;
            }

            if (this.IsParameterBound(c => c.InputObject))
            {
                var resourceIdentifier = new ResourceIdentifier(this.InputObject.Id);
                this.ResourceGroupName = resourceIdentifier.ResourceGroupName;
                this.WorkspaceName     = resourceIdentifier.ParentResource;
                this.WorkspaceName     = this.WorkspaceName.Substring(this.WorkspaceName.LastIndexOf('/') + 1);
                this.Name = resourceIdentifier.ResourceName;
            }

            if (this.IsParameterBound(c => c.ResourceId))
            {
                var resourceIdentifier = new ResourceIdentifier(this.ResourceId);
                this.ResourceGroupName = resourceIdentifier.ResourceGroupName;
                this.WorkspaceName     = resourceIdentifier.ParentResource;
                this.WorkspaceName     = this.WorkspaceName.Substring(this.WorkspaceName.LastIndexOf('/') + 1);
                this.Name = resourceIdentifier.ResourceName;
            }

            if (string.IsNullOrEmpty(this.ResourceGroupName))
            {
                this.ResourceGroupName = this.SynapseAnalyticsClient.GetResourceGroupByWorkspaceName(this.WorkspaceName);
            }

            var result = new SqlPoolVulnerabilityAssessmentSettingsModel(SynapseAnalyticsClient.GetSqlPoolVulnerabilityAssessmentSettings(this.ResourceGroupName, this.WorkspaceName, this.Name),
                                                                         this.ResourceGroupName, this.WorkspaceName, this.Name);

            WriteObject(result);
        }
        public override void ExecuteCmdlet()
        {
            if (this.IsParameterBound(c => c.WorkspaceObject))
            {
                this.ResourceGroupName = new ResourceIdentifier(this.WorkspaceObject.Id).ResourceGroupName;
                this.WorkspaceName     = this.WorkspaceObject.Name;
            }

            if (this.IsParameterBound(c => c.InputObject))
            {
                var resourceIdentifier = new ResourceIdentifier(this.InputObject.Id);
                this.ResourceGroupName = resourceIdentifier.ResourceGroupName;
                this.WorkspaceName     = resourceIdentifier.ParentResource;
                this.WorkspaceName     = this.WorkspaceName.Substring(this.WorkspaceName.LastIndexOf('/') + 1);
                this.Name = resourceIdentifier.ResourceName;
            }

            if (this.IsParameterBound(c => c.ResourceId))
            {
                var resourceIdentifier = new ResourceIdentifier(this.ResourceId);
                this.ResourceGroupName = resourceIdentifier.ResourceGroupName;
                this.WorkspaceName     = resourceIdentifier.ParentResource;
                this.WorkspaceName     = this.WorkspaceName.Substring(this.WorkspaceName.LastIndexOf('/') + 1);
                this.Name = resourceIdentifier.ResourceName;
            }

            if (string.IsNullOrEmpty(this.ResourceGroupName))
            {
                this.ResourceGroupName = this.SynapseAnalyticsClient.GetResourceGroupByWorkspaceName(this.WorkspaceName);
            }

            var parameters = SynapseAnalyticsClient.GetSqlPoolVulnerabilityAssessmentSettings(this.ResourceGroupName, this.WorkspaceName, this.Name);

            if (this.IsParameterBound(c => c.BlobStorageSasUri))
            {
                // In this case the user provided a full BlobStorageSasUri (e.g. "https://mystorage.blob.core.windows.net/vulnerability-assessment?st=XXXXXX" )
                var storageContainerArgs = BlobStorageSasUri.AbsoluteUri.ToString().Split('?');
                if (storageContainerArgs.Length < 2)
                {
                    throw new Exception(Resources.InvalidBlobStorageSasUri);
                }
                parameters.StorageContainerPath   = storageContainerArgs[0];
                parameters.StorageContainerSasKey = storageContainerArgs[1];
            }
            else
            {
                if (this.IsParameterBound(c => c.StorageAccountName))
                {
                    var storageResourceGroupName = SynapseAnalyticsClient.GetStorageResourceGroup(this.StorageAccountName);
                    var storageContainerInfo     = SynapseAnalyticsClient.GetStorageContainerInfo(storageResourceGroupName, this.StorageAccountName, this.ScanResultsContainerName);
                    parameters.StorageContainerPath    = storageContainerInfo.StorageContainerPath;
                    parameters.StorageAccountAccessKey = storageContainerInfo.StorageAccountAccessKey;
                }

                if (string.IsNullOrEmpty(parameters.StorageContainerPath))
                {
                    throw new Exception(Resources.NoStorageAccountSpecified);
                }
            }

            if (this.IsParameterBound(c => c.NotificationEmail))
            {
                if (!Utils.AreEmailAddressesInCorrectFormat(this.NotificationEmail))
                {
                    throw new Exception(Resources.EmailsAreNotValid);
                }
                parameters.RecurringScans.Emails = this.NotificationEmail;
            }

            if (this.IsParameterBound(c => c.RecurringScansInterval))
            {
                parameters.RecurringScans.IsEnabled = this.RecurringScansInterval != RecurringScansInterval.None;
            }

            if (this.IsParameterBound(c => c.EmailAdmin))
            {
                parameters.RecurringScans.EmailSubscriptionAdmins = this.EmailAdmin;
            }

            if (this.ShouldProcess(this.Name, string.Format(Resources.UpdatingSqlPoolVulnerabilityAssessmentSetting, this.Name, this.WorkspaceName)))
            {
                var result = new SqlPoolVulnerabilityAssessmentSettingsModel(SynapseAnalyticsClient.CreateOrUpdateSqlPoolVulnerabilityAssessmentSettings(this.ResourceGroupName, this.WorkspaceName, this.Name, parameters),
                                                                             this.ResourceGroupName, this.WorkspaceName, this.Name);
                WriteObject(result);
            }
        }