New-AzPolicyAssignment

建立原則指派。

Syntax

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>]

Description

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變數中。 最後一個命令會在 $Policy 中,指派$ResourceGroup ResourceId 屬性所識別之資源群組層級的原則。

範例 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 的 ResourceId 屬性所識別的資源群組$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 中的原則指派給資源群組。 $UserAssignedIdentity標識碼屬性所識別的使用者指派的受控識別,會藉由將Id* 屬性傳遞至 IdentityId 參數,指派給原則指派。

範例 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 中指派原則。 指派是以 DoNotEnforceEnforcementMode 值設定,也就是在資源建立或更新期間不會強制執行原則效果。

範例 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

指定要指派給此原則指派之使用者受控識別的標識碼。 如果 'UserAssigned' 值傳遞至 -IdentityType 參數,則需要此值。

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

-IdentityType

指定要指派給此原則指派的受控識別類型。 如果提供 『SystemAssigned』 值,就會產生系統指派的受控識別,並指派給此原則指派。 如果提供 『UserAssigned』 值,則會將透過標識碼傳遞至 -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/訂用帳戶標識符/resourcegroups/資源組名

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

輸入

String

String[]

PsPolicyDefinition

PsPolicySetDefinition

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

PsNonComplianceMessage[]

輸出

PsPolicyAssignment