New-AzPolicyAssignment

Skapar en principtilldelning.

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

Cmdleten New-AzPolicyAssignment skapar en principtilldelning. Ange en princip och ett omfång.

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 {$_.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 4: Principtilldelning på resursgruppsnivå med principparameterfil

Skapa en fil med namnet AllowedLocations.json i den lokala arbetskatalogen med följande innehåll.

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

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.

Parametrar

-ApiVersion

Anger vilken version av resursprovider-API:et som ska användas. Om du inte anger någon version använder den här cmdleten den senaste tillgängliga versionen.

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

-AssignIdentity

Generera och tilldela en systemtilldelad hanterad identitet för den här principtilldelningen. Identiteten används vid körning av distributioner för "deployIfNotExists" och "modify"-principer. Plats krävs när du tilldelar en identitet.

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

-DefaultProfile

Autentiseringsuppgifter, konto, klientorganisation och prenumeration som används för kommunikation med Azure

Type:IAzureContextContainer
Aliases:AzContext, AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

Beskrivningen för principtilldelning

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

-DisplayName

Anger ett visningsnamn för principtilldelningen.

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

-EnforcementMode

Tvingande läge för principtilldelning. För närvarande är giltiga värden Standard, 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

Anger ID för den användartilldelade hanterade identitet som ska tilldelas till den här principtilldelningen. Det här värdet krävs om värdet "UserAssigned" skickas till parametern -IdentityType.

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

-IdentityType

Anger vilken typ av hanterad identitet som ska tilldelas till den här principtilldelningen. Om värdet "SystemAssigned" anges genereras en systemtilldelad hanterad identitet och tilldelas till den här principtilldelningen. Om värdet "UserAssigned" anges skickas den användartilldelade identiteten via dess ID till parametern -IdentityId till den här principtilldelningen. Identiteten används vid körning av distributioner för "deployIfNotExists" och "modify"-principer. Plats krävs när du tilldelar en identitet. Behörigheter måste beviljas till identiteten med hjälp av New-AzRoleAssignment när den systemtilldelade identiteten har skapats. Parametern IdentityType får företräde om både parametern AssignIdentity och IdentityType används.

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

Platsen för principtilldelningens resursidentitet. Detta krävs när värdet -IdentityType anges.

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

-Metadata

Metadata för den nya principtilldelningen. Detta kan antingen vara en sökväg till ett filnamn som innehåller metadata eller metadata som en sträng.

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

-Name

Anger ett namn för principtilldelningen.

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

-NonComplianceMessage

De icke-efterlevnadsmeddelanden som beskriver varför en resurs inte är kompatibel med principen.

Type:PsNonComplianceMessage[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-NotScope

Inte omfång för principtilldelning.

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

-PolicyDefinition

Anger en princip som ett PsPolicyDefinition-objekt som innehåller principregeln.

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

-PolicyParameter

Principparameterns filsökväg eller principparametersträng.

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

-PolicyParameterObject

Principparameterobjektet.

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

-PolicySetDefinition

Definitionsobjektet för principuppsättningen.

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

-Pre

Anger att den här cmdleten tar hänsyn till förhandsversioner av API:et när den automatiskt avgör vilken version som ska användas.

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

-Scope

Anger det omfång där principen ska tilldelas. Om du till exempel vill tilldela en princip till en resursgrupp anger du följande: /subscriptions/resursgruppsnamn för prenumerations-ID/resourcegroups/

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

Indata

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

Utdata

PsPolicyAssignment