New-AzPolicyAssignment
建立或更新原則指派。
語法
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>]
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]
[-PolicyDefinition <PSObject>]
[-DefinitionVersion <String>]
-PolicyParameterObject <Hashtable>
[-DefaultProfile <PSObject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
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]
[-PolicyDefinition <PSObject>]
[-DefinitionVersion <String>]
-PolicyParameter <String>
[-DefaultProfile <PSObject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
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]
-PolicyDefinition <PSObject>
[-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 的原則參數檔案,在$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 中指派原則。
指派會以 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變數中。 最後一個命令會使用$ResourceSelector所指定的資源選取器,將 $Policy 中的原則定義指派給訂用帳戶。
範例 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物件所識別的位置中應該具有 Disabled 效果,並將它儲存在$Override變數中。 最後一個命令會使用$Override指定的覆寫,將 $Policy 中的原則定義指派給訂用帳戶。
範例 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:[Backcompat] 使用原則參數檔案在資源群組層級指派原則
'{
"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 的原則參數檔案,在$ResourceGroup的 ResourceId 屬性所識別的資源群組$Policy中指派原則。
參數
-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 |
-DefinitionVersion
指出原則定義或原則集定義的版本
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Description
如果違反原則,此訊息將會是回應的一部分。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-DisplayName
原則指派的顯示名稱。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-EnforcementMode
原則指派強制模式。 可能的值為 Default 和 DoNotEnforce。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-IdentityId
與原則相關聯的使用者身分識別。 使用者身分識別字典索引鍵參考的格式為 ARM 資源標識符:'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-IdentityType
識別類型。 將系統或使用者指派的身分識別新增至資源時,這是唯一的必要字段。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Location
原則指派的位置。 只有在使用受控識別時才需要。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Metadata
原則指派元數據。 元數據是開放式物件,通常是索引鍵值組的集合。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Name
原則指派的名稱。
類型: | String |
別名: | PolicyAssignmentName |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-NonComplianceMessage
描述資源不符合原則之原因的訊息。 若要建構,請參閱 NONCOMPLIANCEMESSAGE 屬性的 NOTES 區段並建立哈希表。
類型: | PSObject[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-NotScope
原則的排除範圍。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Override
原則屬性值覆寫。
類型: | IOverride[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-PolicyDefinition
接受原則定義或原則集定義物件
類型: | PSObject |
別名: | PolicySetDefinition |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-PolicyParameter
指派原則規則的參數值。 索引鍵是參數名稱。
類型: | String |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-PolicyParameterObject
指派原則規則的參數值。 索引鍵是參數名稱。
類型: | Hashtable |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-ResourceSelector
依資源屬性篩選原則的資源選取器清單。
類型: | IResourceSelector[] |
Position: | Named |
預設值: | None |
必要: | 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 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
PSObject[]
String[]