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

New-AzPolicyDefinition

创建或更新策略定义。

语法

New-AzPolicyDefinition
   -Name <String>
   -Policy <String>
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-Parameter <String>]
   [-Mode <String>]
   [-BackwardCompatible]
   [-DefaultProfile <PSObject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-AzPolicyDefinition
   -Name <String>
   -ManagementGroupName <String>
   -Policy <String>
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-Parameter <String>]
   [-Mode <String>]
   [-BackwardCompatible]
   [-DefaultProfile <PSObject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-AzPolicyDefinition
   -Name <String>
   -SubscriptionId <String>
   -Policy <String>
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-Parameter <String>]
   [-Mode <String>]
   [-BackwardCompatible]
   [-DefaultProfile <PSObject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

说明

New-AzPolicyDefinition cmdlet 创建或更新包含策略规则 JSON 格式的策略定义。

示例

示例 1:使用策略文件创建策略定义

{
   "if": {
      "field": "location",
      "notIn": ["eastus", "westus", "centralus"]
   },
   "then": {
      "effect": "audit"
   }
}

New-AzPolicyDefinition -Name 'LocationDefinition' -Policy C:\LocationPolicy.json

此命令创建名为 LocationDefinition 的策略定义,其中包含 C:\LocationPolicy.json 中指定的策略规则。 上面提供了LocationPolicy.json文件的示例内容。 支持三种文件格式:1。仅策略规则(如上例)。 2. 策略属性对象。 编辑策略定义时,此格式将显示在门户中,并可能包括参数。 3. 完整策略对象。 此格式由 Azure Policy 导出函数生成,可以包含参数。

注意:命令行(例如参数、元数据)上提供的值将替代文件中存在的相应值。

示例 2:使用内联参数创建参数化策略定义

{
   "if": {
      "field": "location",
      "notIn": "[parameters('listOfAllowedLocations')]"
   },
   "then": {
      "effect": "audit"
   }
}
New-AzPolicyDefinition -Name 'LocationDefinition' -Policy C:\LocationPolicy.json -Parameter '{ "listOfAllowedLocations": { "type": "array" } }'

此命令创建名为 LocationDefinition 的策略定义,其中包含 C:\LocationPolicy.json 中指定的策略规则。 策略规则的参数定义内联提供。

示例 3:在管理组中内联创建策略定义

New-AzPolicyDefinition -Name 'VMPolicyDefinition' -ManagementGroupName Dept42 -DisplayName 'Virtual Machine policy definition' -Policy '{"if":{"field":"type","equals":"Microsoft.Compute/virtualMachines"},"then":{"effect":"deny"}}'

此命令在管理组 Dept42 中创建名为 VMPolicyDefinition 的策略定义。 该命令以有效 JSON 格式的字符串指定策略。

示例 4:使用元数据内联创建策略定义

New-AzPolicyDefinition -Name 'VMPolicyDefinition' -Metadata '{"category":"Virtual Machine"}' -Policy '{"if":{"field":"type","equals":"Microsoft.Compute/virtualMachines"},"then":{"effect":"deny"}}' | Format-List

此命令创建名为 VMPolicyDefinition 的策略定义,其中包含指示其类别为“虚拟机”的元数据。 该命令以有效 JSON 格式的字符串指定策略。

示例 5:使用模式内联创建策略定义

New-AzPolicyDefinition -Name 'TagsPolicyDefinition' -Policy '{"if":{"value":"[less(length(field(''tags'')), 3)]","equals":true},"then":{"effect":"deny"}}' -Mode Indexed

此命令创建一个名为 TagsPolicyDefinition 的策略定义,该模式为“Indexed”,指示应仅针对支持标记和位置的资源类型评估策略。

参数

-BackwardCompatible

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

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Confirm

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

类型:SwitchParameter
别名:cf
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-DefaultProfile

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

类型:PSObject
别名:AzureRMContext, AzureCredential
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Description

策略定义说明。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-DisplayName

策略定义的显示名称。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-ManagementGroupName

管理组的 ID。

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Metadata

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

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-Mode

策略定义模式。 一些示例包括 All、Indexed、Microsoft.KeyVault.Data。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-Name

要创建的策略定义的名称。

类型:String
别名:PolicyDefinitionName
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Parameter

策略规则中使用的参数的参数定义。 键是参数名称。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-Policy

策略规则。

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-SubscriptionId

目标订阅的 ID。

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

输入

String

输出

IPolicyDefinition