你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
New-AzPolicyAssignment
创建策略分配。
语法
New-AzPolicyAssignment
-Name <String>
[-Scope <String>]
[-NotScope <String[]>]
[-DisplayName <String>]
[-Description <String>]
[-PolicyDefinition <PsPolicyDefinition>]
[-PolicySetDefinition <PsPolicySetDefinition>]
[-Metadata <String>]
[-EnforcementMode <PolicyAssignmentEnforcementMode>]
[-AssignIdentity]
[-IdentityType <ManagedIdentityType>]
[-IdentityId <String>]
[-Location <String>]
[-NonComplianceMessage <PsNonComplianceMessage[]>]
[-ApiVersion <String>]
[-Pre]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
New-AzPolicyAssignment
-Name <String>
[-Scope <String>]
[-NotScope <String[]>]
[-DisplayName <String>]
[-Description <String>]
-PolicyDefinition <PsPolicyDefinition>
[-PolicySetDefinition <PsPolicySetDefinition>]
-PolicyParameterObject <Hashtable>
[-Metadata <String>]
[-EnforcementMode <PolicyAssignmentEnforcementMode>]
[-AssignIdentity]
[-IdentityType <ManagedIdentityType>]
[-IdentityId <String>]
[-Location <String>]
[-NonComplianceMessage <PsNonComplianceMessage[]>]
[-ApiVersion <String>]
[-Pre]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
New-AzPolicyAssignment
-Name <String>
[-Scope <String>]
[-NotScope <String[]>]
[-DisplayName <String>]
[-Description <String>]
-PolicyDefinition <PsPolicyDefinition>
[-PolicySetDefinition <PsPolicySetDefinition>]
-PolicyParameter <String>
[-Metadata <String>]
[-EnforcementMode <PolicyAssignmentEnforcementMode>]
[-AssignIdentity]
[-IdentityType <ManagedIdentityType>]
[-IdentityId <String>]
[-Location <String>]
[-NonComplianceMessage <PsNonComplianceMessage[]>]
[-ApiVersion <String>]
[-Pre]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
New-AzPolicyAssignment
-Name <String>
[-Scope <String>]
[-NotScope <String[]>]
[-DisplayName <String>]
[-Description <String>]
[-PolicyDefinition <PsPolicyDefinition>]
-PolicySetDefinition <PsPolicySetDefinition>
-PolicyParameterObject <Hashtable>
[-Metadata <String>]
[-EnforcementMode <PolicyAssignmentEnforcementMode>]
[-AssignIdentity]
[-IdentityType <ManagedIdentityType>]
[-IdentityId <String>]
[-Location <String>]
[-NonComplianceMessage <PsNonComplianceMessage[]>]
[-ApiVersion <String>]
[-Pre]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
New-AzPolicyAssignment
-Name <String>
[-Scope <String>]
[-NotScope <String[]>]
[-DisplayName <String>]
[-Description <String>]
[-PolicyDefinition <PsPolicyDefinition>]
-PolicySetDefinition <PsPolicySetDefinition>
-PolicyParameter <String>
[-Metadata <String>]
[-EnforcementMode <PolicyAssignmentEnforcementMode>]
[-AssignIdentity]
[-IdentityType <ManagedIdentityType>]
[-IdentityId <String>]
[-Location <String>]
[-NonComplianceMessage <PsNonComplianceMessage[]>]
[-ApiVersion <String>]
[-Pre]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
说明
New-AzPolicyAssignment cmdlet 创建策略分配。 指定策略和范围。
示例
示例 1:订阅级别的策略分配
$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope "/subscriptions/$($Subscription.Id)"
第一个命令使用 Get-AzSubscription cmdlet 获取名为 Subscription01 的订阅,并将其存储在$Subscription变量中。 第二个命令使用 Get-AzPolicyDefinition cmdlet 获取名为 VirtualMachinePolicy 的策略定义,并将其存储在$Policy变量中。 最后一个命令在订阅范围字符串标识的订阅级别分配$Policy中的策略。
示例 2:资源组级别的策略分配
$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId
第一个命令使用 Get-AzResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组,并将其存储在$ResourceGroup变量中。 第二个命令使用 Get-AzPolicyDefinition cmdlet 获取名为 VirtualMachinePolicy 的策略定义,并将其存储在$Policy变量中。 最后一个命令在由 $ResourceGroup ResourceId 属性标识的资源组级别分配$Policy中的策略。
示例 3:使用策略参数对象在资源组级别分配策略
$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -BuiltIn | Where-Object {$_.Properties.DisplayName -eq 'Allowed locations'}
$Locations = Get-AzLocation | Where-Object displayname -like '*east*'
$AllowedLocations = @{'listOfAllowedLocations'=($Locations.location)}
New-AzPolicyAssignment -Name 'RestrictLocationPolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -PolicyParameterObject $AllowedLocations
第一个命令使用 Get-AzResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组。 该命令将该对象存储在$ResourceGroup变量中。 第二个命令使用 Get-AzPolicyDefinition cmdlet 获取允许位置的内置策略定义。 该命令将该对象存储在$Policy变量中。 第三个和第四个命令创建一个对象,其中包含名称中包含“east”的所有 Azure 区域。 命令将该对象存储在$AllowedLocations变量中。 最后一个命令使用$AllowedLocations中的策略参数对象在资源组级别$Policy分配策略。 $ResourceGroup的 ResourceId 属性标识资源组。
示例 4:使用策略参数文件在资源组级别分配策略
使用以下内容在本地工作目录中创建名为 AllowedLocations.json 的文件。
<#{
"listOfAllowedLocations": {
"value": [
"westus",
"westeurope",
"japanwest"
]
}
}#>
$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -BuiltIn | Where-Object {$_.Properties.DisplayName -eq 'Allowed locations'}
New-AzPolicyAssignment -Name 'RestrictLocationPolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -PolicyParameter .\AllowedLocations.json
第一个命令使用 Get-AzResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组,并将其存储在$ResourceGroup变量中。 第二个命令使用 Get-AzPolicyDefinition cmdlet 获取允许位置的内置策略定义,并将其存储在$Policy变量中。 最后一个命令使用策略参数文件从本地工作目录AllowedLocations.json策略参数文件$ResourceGroup标识的资源组$Policy分配策略。
示例 5:使用系统分配的托管标识的策略分配
$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -Location 'eastus' -IdentityType 'SystemAssigned'
第一个命令使用 Get-AzResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组,并将其存储在$ResourceGroup变量中。 第二个命令使用 Get-AzPolicyDefinition cmdlet 获取名为 VirtualMachinePolicy 的策略定义,并将其存储在$Policy变量中。 最后一个命令将$Policy中的策略分配给资源组。 系统分配的托管标识会自动创建并分配给策略分配。
示例 6:使用用户分配的托管标识的策略分配
$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
$UserAssignedIdentity = Get-AzUserAssignedIdentity -ResourceGroupName 'ResourceGroup1' -Name 'UserAssignedIdentity1'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -Location 'eastus' -IdentityType 'UserAssigned' -IdentityId $UserAssignedIdentity.Id
第一个命令使用 Get-AzResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组,并将其存储在$ResourceGroup变量中。 第二个命令使用 Get-AzPolicyDefinition cmdlet 获取名为 VirtualMachinePolicy 的策略定义,并将其存储在$Policy变量中。 第三个命令使用 Get-AzUserAssignedIdentity cmdlet 获取名为 UserAssignedIdentity1 的用户分配的托管标识,并将其存储在$UserAssignedIdentity变量中。 最后一个命令将$Policy中的策略分配给资源组。 通过将 Id* 属性传递给 IdentityId 参数,将$UserAssignedIdentity的 Id 属性标识的用户分配的托管标识分配给策略分配。
示例 7:具有强制模式属性的策略分配
$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope "/subscriptions/$($Subscription.Id)" -EnforcementMode DoNotEnforce
第一个命令使用 Get-AzSubscription cmdlet 获取名为 Subscription01 的订阅,并将其存储在$Subscription变量中。 第二个命令使用 Get-AzPolicyDefinition cmdlet 获取名为 VirtualMachinePolicy 的策略定义,并将其存储在$Policy变量中。 最后一个命令在订阅范围字符串标识的订阅级别分配$Policy中的策略。 分配使用 DoNotEnforce 的 EnforcementMode 值进行设置,即在资源创建或更新期间不会强制实施策略效果。
示例 8:使用不符合性消息的策略分配
$PolicySet = Get-AzPolicySetDefinition -Name 'VirtualMachinePolicySet'
$NonComplianceMessages = @(@{Message="Only DsV2 SKUs are allowed."; PolicyDefinitionReferenceId="DefRef1"}, @{Message="Virtual machines must follow cost management best practices."})
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicySetDefinition $PolicySet -NonComplianceMessage $NonComplianceMessages
第一个命令使用 Get-AzPolicySetDefinition cmdlet 获取名为 VirtualMachinePolicySet 的策略集定义,并将其存储在$PolicySet变量中。 第二个命令创建不符合性消息的数组。 整个分配的一条常规用途消息,一条消息特定于分配的策略集定义中的 SKU 限制策略。 最后一个命令将$PolicySet中的策略集定义分配给订阅,其中包含两条不合规消息,如果策略拒绝资源,则会显示这些消息。
参数
-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 |
-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 |
-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
指定策略分配的名称。
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 |
-PolicyDefinition
将策略指定为 包含策略规则的 PsPolicyDefinition 对象。
Type: | PsPolicyDefinition |
Position: | Named |
Default value: | None |
Required: | True |
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 |
-PolicySetDefinition
策略集定义对象。
Type: | PsPolicySetDefinition |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
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
指定分配策略的作用域。
例如,若要将策略分配给资源组,请指定以下内容: /subscriptions/
订阅 ID/resourcegroups/
资源组名称
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
输入
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]]
输出
相关链接
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈