Remove-AzSqlDatabaseDataMaskingRule 忽略 Table 和列名

Remove-AzSqlDatabaseDataMaskingRule is ignoring Table and Column name

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

它似乎完全忽略了 -TableName-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"

Returns 删除命令前的所有规则,删除命令后 returns 少一条。所以它删除了一些东西,只是我们要求它删除的特定规则。

有人熟悉这种行为吗?

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

在这种情况下,我的解决方法是直接使用Invoke-AzRestMethod to call the 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"
  }
}'