共用方式為


New-AzPolicyAssignment

建立或更新原則指派。

語法

Default (預設值)

New-AzPolicyAssignment
    -Name <String>
    [-Scope <String>]
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-Location <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ParameterObject

New-AzPolicyAssignment
    -Name <String>
    -PolicyParameterObject <Hashtable>
    [-Scope <String>]
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-Location <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-PolicyDefinition <PSObject>]
    [-DefinitionVersion <String>]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ParameterString

New-AzPolicyAssignment
    -Name <String>
    -PolicyParameter <String>
    [-Scope <String>]
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-Location <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-PolicyDefinition <PSObject>]
    [-DefinitionVersion <String>]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

PolicyDefinitionOrPolicySetDefinition

New-AzPolicyAssignment
    -Name <String>
    -PolicyDefinition <PSObject>
    [-Scope <String>]
    [-NotScope <String[]>]
    [-DisplayName <String>]
    [-Description <String>]
    [-Metadata <String>]
    [-EnforcementMode <String>]
    [-IdentityType <String>]
    [-IdentityId <String>]
    [-Location <String>]
    [-NonComplianceMessage <PSObject[]>]
    [-Override <IOverride[]>]
    [-ResourceSelector <IResourceSelector[]>]
    [-BackwardCompatible]
    [-DefinitionVersion <String>]
    [-DefaultProfile <PSObject>]
    [-WhatIf]
    [-Confirm]
    [<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 變數中。 最後一個命令會在 $ResourceGroup 的 ResourceId 屬性所識別的資源群組層級,以 $Policy 指派原則。

範例 3:資源群組層級的原則指派,其中包含原則參數物件

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -BuiltIn | Where-Object {$_.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:使用原則參數檔案在資源群組層級指派原則

'{
    "listOfAllowedLocations":  {
      "value": [
        "westus",
        "westeurope",
        "japanwest"
      ]
    }
}' > .\AllowedLocations.json

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -BuiltIn | Where-Object {$_.DisplayName -eq 'Allowed locations'}
New-AzPolicyAssignment -Name 'RestrictLocationPolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -PolicyParameter .\AllowedLocations.json

第一個指令會在本端工作目錄中建立名為 AllowedLocations.json 的參數檔案。 第二個命令會使用 Get-AzResourceGroup Cmdlet 取得名為 ResourceGroup11 的資源群組,並將它儲存在 $ResourceGroup 變數中。 第三個命令會使用 Get-AzPolicyDefinition Cmdlet 取得允許位置的內建原則定義,並將它儲存在 $Policy 變數中。 最後一個命令會使用本機工作目錄 AllowedLocations.json 的原則參數檔案,在 ResourceId 屬性所識別的資源群組中指派原則$Policy$ResourceGroup。

範例 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 屬性所識別的使用者指派受控識別,會藉由 將 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。

指派會使用 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中的原則集定義指派給訂閱,其中包含兩個不相符訊息,如果原則拒絕資源,則會顯示這些訊息。

範例 9:使用資源選取器的原則指派

$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
$ResourceSelector = @{Name = "MyLocationSelector"; Selector = @(@{Kind = "resourceLocation"; In = @("eastus", "eastus2")})}
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -ResourceSelector $ResourceSelector

第一個命令會使用 Get-AzPolicyDefinition Cmdlet 取得名為 VirtualMachinePolicy 的原則定義,並將它儲存在 $Policy 變數中。 第二個命令會建立資源選取器物件,用來指定指派應該只套用至位於美國東部或美國東部 2 的資源,並將它儲存在 $ResourceSelector 變數中。 最後一個命令會將$Policy中的原則定義指派給訂用帳戶,其中包含 $ResourceSelector 指定的資源選取器。

範例 10:具有覆寫的原則指派

$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
$Selector = @{Kind = "resourceLocation"; In = @("eastus", "eastus2")}
$Override = @(@{Kind = "policyEffect"; Value = 'Disabled'; Selector = @($Selector)})
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Override $Override

第一個命令會使用 Get-AzPolicyDefinition Cmdlet 取得名為 VirtualMachinePolicy 的原則定義,並將它儲存在 $Policy 變數中。 第二個命令會建立指定美國東部或美國東部 2 位置的位置選取器,並將其儲存在 $Selector 變數中。 第三個指令會建立覆寫物件,該物件將用來指定指派的定義在$Selector物件所識別的位置中應具有「已停用」效果,並將它儲存在$Override變數中。 最後一個命令會將$Policy中的原則定義指派給訂用帳戶,並由$Override指定的覆寫。

範例 11:[Backcompat] 資源群組層級的原則指派,其中包含原則參數物件

$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 屬性會識別資源群組。

範例 12:[反向相容] 資源群組層級的原則指派,並搭配原則參數檔案

'{
    "listOfAllowedLocations":  {
      "value": [
        "westus",
        "westeurope",
        "japanwest"
      ]
    }
}' > .\AllowedLocations.json

$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

第一個指令會在本端工作目錄中建立名為 AllowedLocations.json 的參數檔案。 第二個命令會使用 Get-AzResourceGroup Cmdlet 取得名為 ResourceGroup11 的資源群組,並將它儲存在 $ResourceGroup 變數中。 第三個命令會使用 Get-AzPolicyDefinition Cmdlet 取得允許位置的內建原則定義,並將它儲存在 $Policy 變數中。 最後一個命令會使用本機工作目錄 AllowedLocations.json 的原則參數檔案,在 ResourceId 屬性所識別的資源群組中指派原則$Policy$ResourceGroup。

參數

-BackwardCompatible

導致 Cmdlet 使用舊版格式傳回成品,將原則特定的屬性放在屬性包物件中。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False
別名:參閱

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-DefaultProfile

DefaultProfile 參數無法運作。 如果針對不同的訂用帳戶執行 Cmdlet,請使用 SubscriptionId 參數。

參數屬性

類型:PSObject
預設值:None
支援萬用字元:False
不要顯示:False
別名:AzureRMContext, AzureCredential

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-DefinitionVersion

指出原則定義或原則集定義的版本

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ParameterObject
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ParameterString
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
PolicyDefinitionOrPolicySetDefinition
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Description

如果違反原則,此訊息將會是回應的一部分。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-DisplayName

原則指派的顯示名稱。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-EnforcementMode

原則指派強制模式。 可能的值為 Default 和 DoNotEnforce。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-IdentityId

與原則相關聯的使用者身分識別。 使用者身分識別字典索引鍵參考的格式為 ARM 資源標識符:'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-IdentityType

識別類型。 將系統或使用者指派的身分識別新增至資源時,這是唯一的必要字段。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Location

原則指派的位置。 只有在使用受控識別時才需要。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Metadata

原則指派元數據。 元數據是開放式物件,通常是索引鍵值組的集合。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Name

原則指派的名稱。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False
別名:原則指派名稱

參數集

(All)
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-NonComplianceMessage

描述資源不符合原則之原因的訊息。 若要建構,請參閱 NOTES 一節,以取得 NONCOMPLIANCEMESSAGE 內容,並建立雜湊表。

參數屬性

類型:

PSObject[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-NotScope

原則的排除範圍。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Override

原則屬性值覆寫。

參數屬性

類型:

IOverride[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-PolicyDefinition

接受原則定義或原則集定義物件

參數屬性

類型:PSObject
預設值:None
支援萬用字元:False
不要顯示:False
別名:原則集定義

參數集

ParameterObject
Position:Named
必要:False
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ParameterString
Position:Named
必要:False
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-PolicyParameter

指派原則規則的參數值。 索引鍵是參數名稱。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ParameterString
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-PolicyParameterObject

指派原則規則的參數值。 索引鍵是參數名稱。

參數屬性

類型:Hashtable
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ParameterObject
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ResourceSelector

資源選取器清單,可依資源內容篩選原則。

參數屬性

類型:

IResourceSelector[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Scope

原則指派的範圍。 有效的範圍包括:管理群組 (格式:'/providers/Microsoft.Management/managementGroups/{managementGroup}')、訂用帳戶 (格式:'/subscriptions/{subscriptionId}')、資源群組 (格式:'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}') 或資源 (格式:'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-WhatIf

顯示 Cmdlet 執行時會發生什麼事。 指令未執行。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False
別名:威斯康星州

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters

輸入

PSObject

PSObject

String

String

輸出

IPolicyAssignment