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

New-AzureRmPolicyAssignment

创建策略分配。

警告

截至 2024 年 2 月 29 日,AzureRM PowerShell 模块已正式弃用。 为了确保持续获得支持和更新,建议用户从 AzureRM 迁移到 Az PowerShell 模块。

尽管 AzureRM 模块仍可能正常运行,但它不再维护或受支持,但会根据用户的自由裁量权和风险继续使用任何继续使用模块。 有关过渡到 Az 模块的指导,请参阅我们的迁移资源

语法

New-AzureRmPolicyAssignment
   -Name <String>
   -Scope <String>
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-PolicyDefinition <PSObject>]
   [-PolicySetDefinition <PSObject>]
   [-Metadata <String>]
   [-Sku <Hashtable>]
   [-AssignIdentity]
   [-Location <String>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [-InformationAction <ActionPreference>]
   [-InformationVariable <String>]
   [<CommonParameters>]
New-AzureRmPolicyAssignment
   -Name <String>
   -Scope <String>
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   -PolicyDefinition <PSObject>
   [-PolicySetDefinition <PSObject>]
   -PolicyParameterObject <Hashtable>
   [-Metadata <String>]
   [-Sku <Hashtable>]
   [-AssignIdentity]
   [-Location <String>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [-InformationAction <ActionPreference>]
   [-InformationVariable <String>]
   [<CommonParameters>]
New-AzureRmPolicyAssignment
   -Name <String>
   -Scope <String>
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   -PolicyDefinition <PSObject>
   [-PolicySetDefinition <PSObject>]
   -PolicyParameter <String>
   [-Metadata <String>]
   [-Sku <Hashtable>]
   [-AssignIdentity]
   [-Location <String>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [-InformationAction <ActionPreference>]
   [-InformationVariable <String>]
   [<CommonParameters>]
New-AzureRmPolicyAssignment
   -Name <String>
   -Scope <String>
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-PolicyDefinition <PSObject>]
   -PolicySetDefinition <PSObject>
   -PolicyParameterObject <Hashtable>
   [-Metadata <String>]
   [-Sku <Hashtable>]
   [-AssignIdentity]
   [-Location <String>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [-InformationAction <ActionPreference>]
   [-InformationVariable <String>]
   [<CommonParameters>]
New-AzureRmPolicyAssignment
   -Name <String>
   -Scope <String>
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-PolicyDefinition <PSObject>]
   -PolicySetDefinition <PSObject>
   -PolicyParameter <String>
   [-Metadata <String>]
   [-Sku <Hashtable>]
   [-AssignIdentity]
   [-Location <String>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [-InformationAction <ActionPreference>]
   [-InformationVariable <String>]
   [<CommonParameters>]

说明

New-AzureRmPolicyAssignment cmdlet 创建策略分配。 指定策略和范围。

示例

示例 1:资源组级别的策略分配

PS C:\> $ResourceGroup = Get-AzureRmResourceGroup -Name 'ResourceGroup11'
PS C:\> $Policy = Get-AzureRmPolicyDefinition -Name 'VirtualMachinePolicy'
PS C:\> New-AzureRmPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId

第一个命令使用 Get-AzureRMResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组,并将其存储在$ResourceGroup变量中。 第二个命令使用 Get-AzureRmPolicyDefinition cmdlet 获取名为 VirtualMachinePolicy 的策略定义,并将其存储在$Policy变量中。 最后一个命令在由 $ResourceGroup ResourceId 属性标识的资源组级别分配$Policy中的策略。

示例 2:具有策略参数对象的资源组级别的策略分配

PS C:\> $ResourceGroup = Get-AzureRmResourceGroup -Name 'ResourceGroup11'
PS C:\> $Policy = Get-AzureRmPolicyDefinition -BuiltIn | Where-Object {$_.Properties.DisplayName -eq 'Allowed locations'}
PS C:\> $Locations = Get-AzureRmLocation | where displayname -like '*east*'
PS C:\> $AllowedLocations = @{'listOfAllowedLocations'=($Locations.location)}
PS C:\> New-AzureRmPolicyAssignment -Name 'RestrictLocationPolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -PolicyParameterObject $AllowedLocations

第一个命令使用 Get-AzureRMResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组。 该命令将该对象存储在$ResourceGroup变量中。 第二个命令使用 Get-AzureRmPolicyDefinition cmdlet 获取允许位置的内置策略定义。 该命令将该对象存储在$Policy变量中。 第三个和第四个命令创建一个对象,其中包含名称中包含“east”的所有 Azure 区域。 命令将该对象存储在$AllowedLocations变量中。 最后一个命令使用$AllowedLocations中的策略参数对象在资源组级别$Policy分配策略。 $ResourceGroup的 ResourceId 属性标识资源组。

示例 3:使用策略参数文件在资源组级别分配策略

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

{
    "listOfAllowedLocations":  {
      "value": [
        "westus",
        "westeurope",
        "japanwest"
      ]
    }
}

PS C:\> $ResourceGroup = Get-AzureRmResourceGroup -Name 'ResourceGroup11'
PS C:\> $Policy = Get-AzureRmPolicyDefinition -BuiltIn | Where-Object {$_.Properties.DisplayName -eq 'Allowed locations'}
PS C:\> New-AzureRmPolicyAssignment -Name 'RestrictLocationPolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -PolicyParameter .\AllowedLocations.json

第一个命令使用 Get-AzureRMResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组,并将其存储在$ResourceGroup变量中。 第二个命令使用 Get-AzureRmPolicyDefinition cmdlet 获取允许位置的内置策略定义,并将其存储在$Policy变量中。 最后一个命令使用策略参数文件从本地工作目录AllowedLocations.json策略参数文件$ResourceGroup标识的资源组$Policy分配策略。

示例 4:使用托管标识的策略分配

PS C:\> $ResourceGroup = Get-AzureRmResourceGroup -Name 'ResourceGroup11'
PS C:\> $Policy = Get-AzureRmPolicyDefinition -Name 'VirtualMachinePolicy'
PS C:\> New-AzureRmPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -Location 'eastus' -AssignIdentity

第一个命令使用 Get-AzureRMResourceGroup cmdlet 获取名为 ResourceGroup11 的资源组,并将其存储在$ResourceGroup变量中。 第二个命令使用 Get-AzureRmPolicyDefinition cmdlet 获取名为 VirtualMachinePolicy 的策略定义,并将其存储在$Policy变量中。 最后一个命令将$Policy中的策略分配给资源组。 会自动创建托管标识并将其分配给策略分配。

参数

-ApiVersion

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

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

-AssignIdentity

为此策略分配生成并分配 Microsoft Entra 标识。 执行“deployIfNotExists”策略的部署时,将使用标识。 分配标识时需要位置。

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

-DefaultProfile

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

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

-Description

策略分配的说明

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

-DisplayName

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

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

-InformationAction

指定此 cmdlet 如何响应信息事件。 此参数的可接受值为:

  • 继续
  • 忽略
  • 询问
  • SilentlyContinue
  • 停止
  • Suspend
类型:ActionPreference
别名:infa
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-InformationVariable

指定信息变量。

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

-Location

策略分配的资源标识的位置。 使用 -AssignIdentity 开关时,这是必需的。

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

-Metadata

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

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

-Name

指定策略分配的名称。

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

-NotScope

策略分配的不是范围。

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

-PolicyDefinition

将策略指定为 包含策略规则的 PsPolicyDefinition 对象。

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

-PolicyParameter

策略参数文件路径或策略参数字符串。

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

-PolicyParameterObject

策略参数对象。

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

-PolicySetDefinition

策略集定义对象。

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

-Pre

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

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

-Scope

指定分配策略的作用域。 例如,若要将策略分配给资源组,请指定以下内容: /subscriptions/订阅 ID/resourcegroups/资源组名称

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

-Sku

表示 SKU 属性的哈希表。 默认为免费 SKU,其值为: @{Name = 'A0'; Tier = 'Free'}。 若要使用标准 SKU,请使用值: @{Name = 'A1'; Tier = 'Standard'}

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