你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Update-AzPolicyAssignment

此作使用给定的范围和名称更新策略分配。 策略分配适用于其范围内包含的所有资源。 例如,在资源组范围内分配策略时,该策略将应用于该组中的所有资源。

语法

Name (默认值)

Update-AzPolicyAssignment
    -Name <String>
    [-Scope <String>]
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-Location <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterObject

Update-AzPolicyAssignment
    -Name <String>
    -PolicyParameterObject <PSObject>
    [-Scope <String>]
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-Location <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterString

Update-AzPolicyAssignment
    -Name <String>
    -PolicyParameter <String>
    [-Scope <String>]
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-Location <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Id

Update-AzPolicyAssignment
    -Id <String>
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-Location <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

IdParameterObject

Update-AzPolicyAssignment
    -Id <String>
    -PolicyParameterObject <PSObject>
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-Location <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

IdParameterString

Update-AzPolicyAssignment
    -Id <String>
    -PolicyParameter <String>
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-Location <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InputObject

Update-AzPolicyAssignment
    -InputObject <IPolicyAssignment>
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-Location <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

说明

此作使用给定的范围和名称更新策略分配。 策略分配适用于其范围内包含的所有资源。 例如,在资源组范围内分配策略时,该策略将应用于该组中的所有资源。

示例

示例 1:更新显示名称

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$PolicyAssignment = Get-AzPolicyAssignment -Name 'PolicyAssignment' -Scope $ResourceGroup.ResourceId
Update-AzPolicyAssignment -Id $PolicyAssignment.Id -DisplayName 'Do not allow VM creation'

第一个命令使用 Get-AzResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组。 该命令将该对象存储在$ResourceGroup变量中。 第二个命令使用 Get-AzPolicyAssignment cmdlet 获取名为 PolicyAssignment 的策略分配。 该命令将该对象存储在$PolicyAssignment变量中。 最后一个命令更新由 $ResourceGroup ResourceId 属性标识的资源组上的策略分配的显示名称。

示例 2:将系统分配的托管标识添加到策略分配

$PolicyAssignment = Get-AzPolicyAssignment -Name 'PolicyAssignment'
Update-AzPolicyAssignment -Id $PolicyAssignment.Id -IdentityType 'SystemAssigned' -Location 'westus'

第一个命令使用 Get-AzPolicyAssignment cmdlet 从当前订阅获取名为 PolicyAssignment 的策略分配。 该命令将该对象存储在$PolicyAssignment变量中。 最后一个命令将系统分配的托管标识分配给策略分配。

示例 3:将用户分配的托管标识添加到策略分配

$PolicyAssignment = Get-AzPolicyAssignment -Name 'PolicyAssignment'
$UserAssignedIdentity = Get-AzUserAssignedIdentity -ResourceGroupName 'ResourceGroup1' -Name 'UserAssignedIdentity1'
 Update-AzPolicyAssignment -Id $PolicyAssignment.Id -IdentityType 'UserAssigned' -Location 'westus' -IdentityId $UserAssignedIdentity.Id

第一个命令使用 Get-AzPolicyAssignment cmdlet 从当前订阅获取名为 PolicyAssignment 的策略分配。 该命令将该对象存储在$PolicyAssignment变量中。 第二个命令使用 Get-AzUserAssignedIdentity cmdlet 获取名为 UserAssignedIdentity1 的用户分配的托管标识,并将其存储在$UserAssignedIdentity变量中。 最后一个命令将由$UserAssignedIdentity的 Id 属性标识的用户分配的托管标识分配给策略分配。

示例 4:使用新策略参数对象更新策略分配参数

$Locations = Get-AzLocation | Where-Object {($_.displayname -like 'france*') -or ($_.displayname -like 'uk*')}
$AllowedLocations = @{'listOfAllowedLocations'=($Locations.location)}
$PolicyAssignment = Get-AzPolicyAssignment -Name 'PolicyAssignment'
Update-AzPolicyAssignment -Id $PolicyAssignment.Id -PolicyParameterObject $AllowedLocations

第一个和第二个命令创建一个对象,其中包含名称以“france”或“uk”开头的所有 Azure 区域。 第二个命令将该对象存储在$AllowedLocations变量中。 第三个命令获取名为“PolicyAssignment”的策略分配。该命令将该对象存储在$PolicyAssignment变量中。 最后一个命令更新名为 PolicyAssignment 的策略分配上的参数值。

示例 5:使用策略参数文件更新策略分配参数

{
  "listOfAllowedLocations":  {
    "value": [
      "uksouth",
      "ukwest",
      "francecentral",
      "francesouth"
    ]
  }
}

Update-AzPolicyAssignment -Name 'PolicyAssignment' -PolicyParameter .\AllowedLocations.json

该命令使用策略参数文件 AllowedLocations.json 从本地工作目录更新名为“PolicyAssignment”的策略分配。

示例 6:更新 enforcementMode

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$PolicyAssignment = Get-AzPolicyAssignment -Name 'PolicyAssignment' -Scope $ResourceGroup.ResourceId
Update-AzPolicyAssignment -Id $PolicyAssignment.Id -EnforcementMode Default

第一个命令使用 Get-AzResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组。 该命令将该对象存储在$ResourceGroup变量中。 第二个命令使用 Get-AzPolicyAssignment cmdlet 获取名为 PolicyAssignment 的策略分配。 该命令将该对象存储在$PolicyAssignment变量中。 最后一个命令更新由 $ResourceGroup ResourceId 属性标识的资源组上的策略分配的 enforcementMode 属性。

示例 7:更新不符合性消息

$PolicyAssignment = Get-AzPolicyAssignment -Name 'VirtualMachinePolicy'
Update-AzPolicyAssignment -Id $PolicyAssignment.Id -NonComplianceMessage @{Message="All resources must follow resource naming guidelines."}

第一个命令使用 Get-AzPolicyAssignment cmdlet 获取名为 VirtualMachinePolicy 的策略分配,并将其存储在$PolicyAssignment变量中。 最后一条命令使用策略拒绝资源时显示的新消息更新策略分配上的不符合性消息。

示例 8:更新资源选择器

$ResourceSelector = @{Name = "MyLocationSelector"; Selector = @(@{Kind = "resourceLocation"; NotIn = @("eastus", "eastus2")})}
Update-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -ResourceSelector $ResourceSelector

第一个命令创建一个资源选择器对象,该对象将用于指定赋值应仅适用于不位于美国东部或美国东部 2 的资源,并将其存储在$ResourceSelector变量中。 最后一个命令使用$ResourceSelector指定的资源选择器更新名为 VirtualMachinePolicyAssignment 的策略分配。

示例 9:更新替代

$Selector = @{Kind = "resourceLocation"; NotIn = @("eastus", "eastus2")}
$Override = @(@{Kind = "policyEffect"; Value = 'Disabled'; Selector = @($Selector)})
Update-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -Override $Override

第一个命令创建一个位置选择器,用于指定除美国东部或美国东部 2 以外的位置,并将其存储在$Selector变量中。 第二个命令创建一个替代对象,该对象将用于指定分配的定义应在由$Selector标识的位置产生禁用效果。 最后一个命令使用$Override指定的替代更新名为 VirtualMachinePolicyAssignment 的策略分配。

示例 10:[Backcompat] 更新 enforcementMode

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$PolicyAssignment = Get-AzPolicyAssignment -Name 'PolicyAssignment' -Scope $ResourceGroup.ResourceId -BackwardCompatible
Set-AzPolicyAssignment -Id $PolicyAssignment.ResourceId -EnforcementMode Default

第一个命令使用 Get-AzResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组。 该命令将该对象存储在$ResourceGroup变量中。 第二个命令使用 Get-AzPolicyAssignment cmdlet 获取名为 PolicyAssignment 的策略分配。 该命令将该对象存储在$PolicyAssignment变量中。 最后一个命令更新由 $ResourceGroup ResourceId 属性标识的资源组上的策略分配的 enforcementMode 属性。

参数

-BackwardCompatible

导致 cmdlet 使用旧格式在属性包对象中放置特定于策略的属性返回项目。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Confirm

在运行 cmdlet 之前,提示你进行确认。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-DefaultProfile

DefaultProfile 参数不起作用。 如果对其他订阅执行 cmdlet,请使用 SubscriptionId 参数。

参数属性

类型:PSObject
默认值:None
支持通配符:False
不显示:False
别名:AzureRMContext, AzureCredential

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Description

如果发生策略冲突,此消息将是响应的一部分。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-DisplayName

策略分配的显示名称。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-EnforcementMode

策略分配强制模式。 可能的值为 Default 和 DoNotEnforce。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Id

要更新的策略分配的 ID。 使用格式“{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}”。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:ResourceId, PolicyAssignmentId

参数集

Id
Position:Named
必需:True
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False
IdParameterObject
Position:Named
必需:True
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False
IdParameterString
Position:Named
必需:True
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-IdentityId

与策略关联的用户标识。 用户标识字典密钥引用的格式为 ARM 资源 ID:“/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}”。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-IdentityType

标识类型。 这是将系统或用户分配的标识添加到资源时的唯一必填字段。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-InputObject

此作使用给定的范围和名称更新策略分配。 策略分配适用于其范围内包含的所有资源。 例如,在资源组范围内分配策略时,该策略将应用于该组中的所有资源。

参数属性

类型:IPolicyAssignment
默认值:None
支持通配符:False
不显示:False

参数集

InputObject
Position:Named
必需:True
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Location

策略分配的位置。 仅当使用托管标识时才需要。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Metadata

策略分配元数据。 元数据是一个开放结束的对象,通常是键值对的集合。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Name

策略分配的名称。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:PolicyAssignmentName

参数集

Name
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
NameParameterObject
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
NameParameterString
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-NonComplianceMessage

描述资源不符合策略的原因的消息。 若要构造,请参阅 NONCOMPLIANCEMESSAGE 属性的 NOTES 部分并创建哈希表。

参数属性

类型:

PSObject[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-NotScope

策略的排除范围。

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Override

策略属性值重写。

参数属性

类型:

IOverride[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-PolicyParameter

分配的策略规则的参数值。 键是参数名称。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

NameParameterString
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
IdParameterString
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-PolicyParameterObject

分配的策略规则的参数值。 键是参数名称。

参数属性

类型:PSObject
默认值:None
支持通配符:False
不显示:False

参数集

NameParameterObject
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
IdParameterObject
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ResourceSelector

按资源属性筛选策略的资源选择器列表。

参数属性

类型:

IResourceSelector[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Scope

策略分配的范围。 有效范围包括:管理组(格式:'/providers/Microsoft.Management/managementGroups/{managementGroup}')、订阅(格式:'/subscriptions/{subscriptionId}')、资源组(格式:'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', 或资源(格式:'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

Name
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
NameParameterObject
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
NameParameterString
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-WhatIf

显示 cmdlet 运行时会发生什么情况。 命令脚本未运行。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:无线

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

IPolicyAssignment

PSObject

String

String

输出

IPolicyAssignment

备注

别名

Set-AzPolicyAssignment