Dela via


New-AzPolicyAssignment

Skapar eller uppdaterar en principtilldelning.

Syntax

New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-EnforcementMode <String>]
   [-IdentityType <String>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PSObject[]>]
   [-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[]>]
   [-BackwardCompatible]
   [-PolicyDefinition <PSObject>]
   -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[]>]
   [-BackwardCompatible]
   [-PolicyDefinition <PSObject>]
   -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[]>]
   [-BackwardCompatible]
   -PolicyDefinition <PSObject>
   [-DefaultProfile <PSObject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

Cmdleten New-AzPolicyAssignment skapar eller uppdaterar en principtilldelning med angivet omfång och namn. Principtilldelningar gäller för alla resurser som ingår i deras omfång. När du till exempel tilldelar en princip i resursgruppens omfång gäller den principen för alla resurser i gruppen.

Exempel

Exempel 1: Principtilldelning på prenumerationsnivå

$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope "/subscriptions/$($Subscription.Id)"

Det första kommandot hämtar en prenumeration med namnet Subscription01 med hjälp av cmdleten Get-AzSubscription och lagrar den i variabeln $Subscription. Det andra kommandot hämtar principdefinitionen med namnet VirtualMachinePolicy med hjälp av cmdleten Get-AzPolicyDefinition och lagrar den i variabeln $Policy. Det sista kommandot tilldelar principen i $Policy på den prenumerationsnivå som identifieras av prenumerationsomfångssträngen.

Exempel 2: Principtilldelning på resursgruppsnivå

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId

Det första kommandot hämtar en resursgrupp med namnet ResourceGroup11 med hjälp av cmdleten Get-AzResourceGroup och lagrar den i variabeln $ResourceGroup. Det andra kommandot hämtar principdefinitionen med namnet VirtualMachinePolicy med hjälp av cmdleten Get-AzPolicyDefinition och lagrar den i variabeln $Policy. Det sista kommandot tilldelar principen i $Policy på den resursgrupp som identifieras av egenskapen ResourceId för $ResourceGroup.

Exempel 3: Principtilldelning på resursgruppsnivå med principparameterobjekt

$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

Det första kommandot hämtar en resursgrupp med namnet ResourceGroup11 med hjälp av cmdleten Get-AzResourceGroup. Kommandot lagrar objektet i variabeln $ResourceGroup. Det andra kommandot hämtar den inbyggda principdefinitionen för tillåtna platser med hjälp av cmdleten Get-AzPolicyDefinition. Kommandot lagrar objektet i variabeln $Policy. De tredje och fjärde kommandona skapar ett objekt som innehåller alla Azure-regioner med "öst" i namnet. Kommandona lagrar objektet i variabeln $AllowedLocations. Det sista kommandot tilldelar principen i $Policy på nivån för en resursgrupp med hjälp av principparameterobjektet i $AllowedLocations. Egenskapen ResourceId för $ResourceGroup identifierar resursgruppen.

Exempel 4: Principtilldelning på resursgruppsnivå med principparameterfil

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

$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

Det första kommandot hämtar en resursgrupp med namnet ResourceGroup11 med hjälp av cmdleten Get-AzResourceGroup och lagrar den i variabeln $ResourceGroup. Det andra kommandot hämtar den inbyggda principdefinitionen för tillåtna platser med hjälp av cmdleten Get-AzPolicyDefinition och lagrar den i variabeln $Policy. Det sista kommandot tilldelar principen i $Policy i resursgruppen som identifieras av egenskapen ResourceId för $ResourceGroup med hjälp av principparameterfilen AllowedLocations.json från den lokala arbetskatalogen.

Exempel 5: Principtilldelning med en systemtilldelad hanterad identitet

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -Location 'eastus' -IdentityType 'SystemAssigned'

Det första kommandot hämtar en resursgrupp med namnet ResourceGroup11 med hjälp av cmdleten Get-AzResourceGroup och lagrar den i variabeln $ResourceGroup. Det andra kommandot hämtar principdefinitionen med namnet VirtualMachinePolicy med hjälp av cmdleten Get-AzPolicyDefinition och lagrar den i variabeln $Policy. Det sista kommandot tilldelar principen i $Policy till resursgruppen. En systemtilldelad hanterad identitet skapas automatiskt och tilldelas till principtilldelningen.

Exempel 6: Principtilldelning med en användartilldelad hanterad identitet

$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

Det första kommandot hämtar en resursgrupp med namnet ResourceGroup11 med hjälp av cmdleten Get-AzResourceGroup och lagrar den i variabeln $ResourceGroup. Det andra kommandot hämtar principdefinitionen med namnet VirtualMachinePolicy med hjälp av cmdleten Get-AzPolicyDefinition och lagrar den i variabeln $Policy. Det tredje kommandot hämtar den användartilldelade hanterade identiteten med namnet UserAssignedIdentity1 med cmdleten Get-AzUserAssignedIdentity och lagrar den i variabeln $UserAssignedIdentity. Det sista kommandot tilldelar principen i $Policy till resursgruppen. Den användartilldelade hanterade identiteten som identifieras av ID-egenskapen för $UserAssignedIdentity tilldelas till principtilldelningen genom att egenskapen Id* skickas till parametern IdentityId.

Exempel 7: Principtilldelning med en egenskap för tvingande läge

$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope "/subscriptions/$($Subscription.Id)" -EnforcementMode DoNotEnforce

Det första kommandot hämtar en prenumeration med namnet Subscription01 med hjälp av cmdleten Get-AzSubscription och lagrar den i variabeln $Subscription. Det andra kommandot hämtar principdefinitionen med namnet VirtualMachinePolicy med hjälp av cmdleten Get-AzPolicyDefinition och lagrar den i variabeln $Policy. Det sista kommandot tilldelar principen i $Policy på den prenumerationsnivå som identifieras av prenumerationsomfångssträngen.

Tilldelningen anges med värdet EnforcementMode för DoNotEnforce , dvs. principeffekten tillämpas inte när resursen skapas eller uppdateras.

Exempel 8: Principtilldelning med icke-efterlevnadsmeddelanden

$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

Det första kommandot hämtar principuppsättningsdefinitionen med namnet VirtualMachinePolicySet med hjälp av cmdleten Get-AzPolicySetDefinition och lagrar den i variabeln $PolicySet. Det andra kommandot skapar en matris med icke-efterlevnadsmeddelanden. Ett allmänt syftesmeddelande för hela tilldelningen och ett meddelande som är specifikt för en SKU-begränsningsprincip i den tilldelade principuppsättningsdefinitionen. Det sista kommandot tilldelar principuppsättningsdefinitionen i $PolicySet till prenumerationen med två icke-efterlevnadsmeddelanden som visas om en resurs nekas av principen.

Exempel 9: [Backcompat] Principtilldelning på resursgruppsnivå med principparameterobjekt

$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

Det första kommandot hämtar en resursgrupp med namnet ResourceGroup11 med hjälp av cmdleten Get-AzResourceGroup. Kommandot lagrar objektet i variabeln $ResourceGroup. Det andra kommandot hämtar den inbyggda principdefinitionen för tillåtna platser med hjälp av cmdleten Get-AzPolicyDefinition. Kommandot lagrar objektet i variabeln $Policy. De tredje och fjärde kommandona skapar ett objekt som innehåller alla Azure-regioner med "öst" i namnet. Kommandona lagrar objektet i variabeln $AllowedLocations. Det sista kommandot tilldelar principen i $Policy på nivån för en resursgrupp med hjälp av principparameterobjektet i $AllowedLocations. Egenskapen ResourceId för $ResourceGroup identifierar resursgruppen.

Exempel 10: [Backcompat] Principtilldelning på resursgruppsnivå med principparameterfil

{
    "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

Det första kommandot hämtar en resursgrupp med namnet ResourceGroup11 med hjälp av cmdleten Get-AzResourceGroup och lagrar den i variabeln $ResourceGroup. Det andra kommandot hämtar den inbyggda principdefinitionen för tillåtna platser med hjälp av cmdleten Get-AzPolicyDefinition och lagrar den i variabeln $Policy. Det sista kommandot tilldelar principen i $Policy i resursgruppen som identifieras av egenskapen ResourceId för $ResourceGroup med hjälp av principparameterfilen AllowedLocations.json från den lokala arbetskatalogen.

Parametrar

-BackwardCompatible

Gör att cmdleten returnerar artefakter med äldre format som placerar principspecifika egenskaper i ett egenskapspåseobjekt.

Typ:SwitchParameter
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

Typ:SwitchParameter
Aliases:cf
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

Parametern DefaultProfile fungerar inte. Använd parametern SubscriptionId när den är tillgänglig om du kör cmdleten mot en annan prenumeration.

Typ:PSObject
Aliases:AzureRMContext, AzureCredential
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

Det här meddelandet är en del av svaret i händelse av principöverträdelse.

Typ:String
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:True
Accept wildcard characters:False

-DisplayName

Visningsnamnet för principtilldelningen.

Typ:String
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:True
Accept wildcard characters:False

-EnforcementMode

Tvingande läge för principtilldelning. Möjliga värden är Standard och DoNotEnforce.

Typ:String
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:True
Accept wildcard characters:False

-IdentityId

Användaridentiteten som är associerad med principen. Nyckelreferenserna för användaridentitetsordlistan är ARM-resurs-ID:er i formuläret: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.

Typ:String
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:False
Accept wildcard characters:False

-IdentityType

Identitetstypen. Det här är det enda obligatoriska fältet när du lägger till en system- eller användartilldelad identitet till en resurs.

Typ:String
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:False
Accept wildcard characters:False

-Location

Platsen för principtilldelningen. Krävs endast vid användning av hanterad identitet.

Typ:String
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:True
Accept wildcard characters:False

-Metadata

Metadata för principtilldelning. Metadata är ett öppet slutobjekt och är vanligtvis en samling nyckelvärdepar.

Typ:String
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:True
Accept wildcard characters:False

-Name

Namnet på principtilldelningen.

Typ:String
Aliases:PolicyAssignmentName
Position:Named
standardvärde:None
Obligatorisk:True
Accept pipeline input:True
Accept wildcard characters:False

-NonComplianceMessage

Meddelandena som beskriver varför en resurs inte är kompatibel med principen. Information om hur du skapar finns i AVSNITTET ANTECKNINGAR för NONCOMPLIANCEMESSAGE-egenskaper och skapa en hash-tabell.

Typ:PSObject[]
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:True
Accept wildcard characters:False

-NotScope

Principens undantagna omfång.

Typ:String[]
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:True
Accept wildcard characters:False

-PolicyDefinition

Acceptera principdefinition eller principuppsättningsdefinitionsobjekt

Typ:PSObject
Aliases:PolicySetDefinition
Position:Named
standardvärde:None
Obligatorisk:True
Accept pipeline input:True
Accept wildcard characters:False

-PolicyParameter

Parametervärdena för den tilldelade principregeln. Nycklarna är parameternamnen.

Typ:String
Position:Named
standardvärde:None
Obligatorisk:True
Accept pipeline input:False
Accept wildcard characters:False

-PolicyParameterObject

Parametervärdena för den tilldelade principregeln. Nycklarna är parameternamnen.

Typ:Hashtable
Position:Named
standardvärde:None
Obligatorisk:True
Accept pipeline input:False
Accept wildcard characters:False

-Scope

Omfånget för principtilldelningen. Giltiga omfång är: hanteringsgrupp (format: '/providers/Microsoft.Management/managementGroups/{managementGroup}'), prenumeration (format: '/subscriptions/{subscriptionId}'), resursgrupp (format: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', eller resurs (format: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'

Typ:String
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

Typ:SwitchParameter
Aliases:wi
Position:Named
standardvärde:None
Obligatorisk:False
Accept pipeline input:False
Accept wildcard characters:False

Indata

PSObject

PSObject[]

String

String[]

Utdata

IPolicyAssignment