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

Set-AzPolicyAssignment

修改策略分配。

语法

Set-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-AssignIdentity]
   [-Location <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   -PolicyParameterObject <Hashtable>
   [-AssignIdentity]
   [-Location <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   -PolicyParameter <String>
   [-AssignIdentity]
   [-Location <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzPolicyAssignment
   [-NotScope <String[]>]
   -Id <String>
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-AssignIdentity]
   [-Location <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzPolicyAssignment
   [-NotScope <String[]>]
   -Id <String>
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   -PolicyParameterObject <Hashtable>
   [-AssignIdentity]
   [-Location <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzPolicyAssignment
   [-NotScope <String[]>]
   -Id <String>
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   -PolicyParameter <String>
   [-AssignIdentity]
   [-Location <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzPolicyAssignment
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-AssignIdentity]
   [-Location <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   -InputObject <PsPolicyAssignment>
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]

说明

Set-AzPolicyAssignment cmdlet 修改策略分配。 按 ID 或名称和范围指定分配。

示例

示例 1:更新显示名称

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

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

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

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

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

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

$PolicyAssignment = Get-AzPolicyAssignment -Name 'PolicyAssignment'
$UserAssignedIdentity = Get-AzUserAssignedIdentity -ResourceGroupName 'ResourceGroup1' -Name 'UserAssignedIdentity1'
 Set-AzPolicyAssignment -Id $PolicyAssignment.ResourceId -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'
Set-AzPolicyAssignment -Id $PolicyAssignment.ResourceId -PolicyParameterObject $AllowedLocations

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

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

使用以下内容在本地工作目录中创建名为 AllowedLocations.json 的文件。

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

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

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

示例 6:更新 enforcementMode

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

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

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

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

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

参数

-ApiVersion

指定要使用的资源提供程序 API 的版本。 如果未指定版本,此 cmdlet 将使用最新的可用版本。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AssignIdentity

为此策略分配生成并分配系统分配的托管标识。 在执行“deployIfNotExists”和“modify”策略的部署时,将使用标识。 分配标识时需要位置。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

用于与 azure 通信的凭据、帐户、租户和订阅

Type:IAzureContextContainer
Aliases:AzContext, AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

策略分配的说明

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DisplayName

指定策略分配的新显示名称。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-EnforcementMode

策略分配的强制模式。 目前,有效值为 Default、DoNotEnforce。

Type:Nullable<T>[PolicyAssignmentEnforcementMode]
Accepted values:Default, DoNotEnforce
Position:Named
Default value:Default
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Id

指定此 cmdlet 修改的策略分配的完全限定资源 ID。

Type:String
Aliases:ResourceId
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-IdentityId

指定要分配给此策略分配的用户托管标识的 ID。 如果将值“UserAssigned”传递给 -IdentityType 参数,则此值是必需的。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IdentityType

指定要分配给此策略分配的托管标识的类型。 如果提供了“SystemAssigned”值,则会生成系统分配的托管标识并将其分配给此策略分配。 如果提供了“UserAssigned”值,则通过 ID 传递给 -IdentityId 参数的用户分配标识将分配到此策略分配。 在执行“deployIfNotExists”和“modify”策略的部署时,将使用标识。 分配标识时需要位置。 创建系统分配的标识后,必须使用 New-AzRoleAssignment 向标识授予权限。 如果使用 AssignIdentity 和 IdentityType 参数,则 IdentityType 参数将优先。

Type:Nullable<T>[ManagedIdentityType]
Accepted values:SystemAssigned, UserAssigned, None
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

要更新的另一个 cmdlet 输出的策略分配对象。

Type:PsPolicyAssignment
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Location

策略分配的资源标识的位置。 提供 -IdentityType 值时,这是必需的。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Metadata

策略分配的更新元数据。 这可以是包含元数据的文件名的路径,也可以是作为字符串的元数据。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Name

指定此 cmdlet 修改的策略分配的名称。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NonComplianceMessage

描述资源不符合策略的原因的不符合性消息。

Type:PsNonComplianceMessage[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-NotScope

策略分配不限定范围。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-PolicyParameter

策略分配的新策略参数文件路径或字符串。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PolicyParameterObject

策略分配的新策略参数对象。

Type:Hashtable
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Pre

指示此 cmdlet 在自动确定要使用的版本时会考虑预发布 API 版本。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

指定应用策略的范围。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

输入

String

String[]

Nullable<T>[[Microsoft.Azure.Commands.ResourceManager.Cmdlets.Entities.Policy.PolicyAssignmentEnforcementMode, Microsoft.Azure.PowerShell.Cmdlets.ResourceManager, Version=3.5.0.0, Culture=neutral, PublicKeyToken=null]]

PsPolicyAssignment

PsNonComplianceMessage[]

输出

PsPolicyAssignment