首页 > 解决方案 > Remove-AzSqlDatabaseDataMaskingRule 忽略表和列名称

问题描述

PowerShell 方法Remove-AzSqlDatabaseDataMaskingRule的行为就像它具有未定义的行为一样。

它似乎完全忽略了-TableNameand-ColumnName参数,而是简单地删除了它找到的第一个屏蔽规则。

请参阅以下命令:

Remove-AzSqlDatabaseDataMaskingRule -SchemaName "dbo" -TableName "anything" -ColumnName "anything" -ServerName "our-server-name" -DatabaseName "our-database-name" -ResourceGroupName "our-rg"

打电话

Get-AzSqlDatabaseDataMaskingRule -ServerName "our-server-name" -DatabaseName "our-database-name" -ResourceGroupName "our-rg"

在 remove 命令之前返回所有规则,在 remove 命令之后返回一个。所以它删除了一些东西,只是我们要求它的特定规则。

任何熟悉这种行为的人?

标签: azurepowershellazure-powershell

解决方案


好吧,我也可以在我这边重现您的问题,即使使用最新的Az.Sql模块,它也应该是一个错误。

在这种情况下,我的解决方法是直接Invoke-AzRestMethod调用 REST API Data Masking Rules - Create Or Update。确保您的Az模块不是太旧,否则没有Invoke-AzRestMethod命令,Update-Module -Name Az如果需要,您可以使用更新模块。

在我的示例中,tab1TableNamecol2ColumnNamedboSchemaName,也将它们替换为您的值,"ruleState": "Disabled"用于删除规则。有关 中值的详细信息Payload,您可以使用Get-AzSqlDatabaseDataMaskingRule查看特定值。

$id = (Get-AzSqlDatabase -ServerName "joysqldb" -DatabaseName "joydb1" -ResourceGroupName "xxxx").ResourceId

Invoke-AzRestMethod -Path "$id/dataMaskingPolicies/Default/rules/dbo_tab1_col2?api-version=2014-04-01" -Method "PUT" -Payload '{
  "properties": {
    "id": "dbo_tab1_col2",
    "ruleState": "Disabled",
    "schemaName": "dbo",
    "tableName": "tab1",
    "columnName": "col2",
    "maskingFunction": "Default"
  }
}'

在此处输入图像描述


推荐阅读