Hantera tilldelningar med PowerShell
Viktigt
Den 11 juli 2026 blir skisser (förhandsversion) inaktuella. Migrera dina befintliga skissdefinitioner och tilldelningar till mallspecifikationer och distributionsstackar. Skissartefakter ska konverteras till ARM JSON-mallar eller Bicep-filer som används för att definiera distributionsstackar. Information om hur du skapar en artefakt som en ARM-resurs finns i:
En skisstilldelning kan hanteras med hjälp av modulen Az.Blueprint Azure PowerShell. Modulen stöder hämtning, skapande, uppdatering och borttagning av tilldelningar. Modulen kan också hämta information om befintliga skissdefinitioner. Den här artikeln beskriver hur du installerar modulen och börjar använda den.
Lägg till Az.Blueprint-modulen
Om du vill aktivera Azure PowerShell för att hantera skisstilldelningar måste modulen läggas till. Den här modulen kan användas med lokalt installerat PowerShell, med Azure Cloud Shell eller med Azure PowerShell Docker-avbildningen.
Grundläggande krav
Azure Blueprints-modulen kräver följande programvara:
- Azure PowerShell 1.5.0 eller senare. Om den ännu inte är installerad följer du de här instruktionerna.
- PowerShellGet 2.0.1 eller högre. Om den inte är installerad eller uppdaterad följer du de här instruktionerna.
Installera modulen
Azure Blueprints-modulen för PowerShell är Az.Blueprint.
Från en administrativ PowerShell-prompt kör du följande kommando:
# Install the Azure Blueprints module from PowerShell Gallery Install-Module -Name Az.Blueprint
Anteckning
Om Az.Accounts redan är installerat kan det vara nödvändigt att använda
-AllowClobber
för att tvinga installationen.Kontrollera att modulen har importerats och är rätt version (0.2.6):
# Get a list of commands for the imported Az.Blueprint module Get-Command -Module 'Az.Blueprint' -CommandType 'Cmdlet'
Hämta skissdefinitioner
Det första steget för att arbeta med en tilldelning är ofta att få en referens till en skissdefinition.
Cmdleten Get-AzBlueprint
hämtar en eller flera skissdefinitioner. Cmdleten kan hämta skissdefinitioner från en hanteringsgrupp med -ManagementGroupId {mgId}
eller en prenumeration med -SubscriptionId {subId}
. Parametern Namn hämtar en skissdefinition, men måste användas med ManagementGroupId eller SubscriptionId.
Version kan användas med Namn för att vara mer explicit om vilken skissdefinition som returneras. I stället för Version hämtar växeln -LatestPublished
den senast publicerade versionen.
I följande exempel används Get-AzBlueprint
för att hämta alla versioner av en skissdefinition med namnet "101-blueprints-definition-subscription" från en specifik prenumeration som representeras som {subId}
:
# Login first with Connect-AzAccount if not using Cloud Shell
# Get all versions of the blueprint definition in the specified subscription
$blueprints = Get-AzBlueprint -SubscriptionId '{subId}' -Name '101-blueprints-definition-subscription'
# Display the blueprint definition object
$blueprints
Exempelutdata för en skissdefinition med flera versioner ser ut så här:
Name : 101-blueprints-definition-subscription
Id : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprints/101
-blueprints-definition-subscription
DefinitionLocationId : {subId}
Versions : {1.0, 1.1}
TimeCreated : 2019-02-25
TargetScope : Subscription
Parameters : {storageAccount_storageAccountType, storageAccount_location,
allowedlocations_listOfAllowedLocations, [Usergrouporapplicationname]:Reader_RoleAssignmentName}
ResourceGroups : ResourceGroup
Skissparametrarna i skissdefinitionen kan utökas för att ge mer information.
$blueprints.Parameters
Key Value
--- -----
storageAccount_storageAccountType Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
storageAccount_location Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
allowedlocations_listOfAllowedLocations Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
[Usergrouporapplicationname]:Reader_RoleAssignmentName Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
Hämta skisstilldelningar
Om skisstilldelningen redan finns kan du hämta en referens till den med cmdleten Get-AzBlueprintAssignment
. Cmdleten tar SubscriptionId och Name som valfria parametrar. Om SubscriptionId inte har angetts används den aktuella prenumerationskontexten.
I följande exempel används Get-AzBlueprintAssignment
för att hämta en enda skisstilldelning med namnet "Assignment-lock-resource-groups" från en specifik prenumeration som representeras som {subId}
:
# Login first with Connect-AzAccount if not using Cloud Shell
# Get the blueprint assignment in the specified subscription
$blueprintAssignment = Get-AzBlueprintAssignment -SubscriptionId '{subId}' -Name 'Assignment-lock-resource-groups'
# Display the blueprint assignment object
$blueprintAssignment
Exempelutdata för en skisstilldelning ser ut så här:
Name : Assignment-lock-resource-groups
Id : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprintAssignme
nts/Assignment-lock-resource-groups
Scope : /subscriptions/{subId}
LastModified : 2019-02-19
LockMode : AllResourcesReadOnly
ProvisioningState : Succeeded
Parameters :
ResourceGroups : ResourceGroup
Skapa skisstilldelningar
Om skisstilldelningen inte finns ännu kan du skapa den med cmdleten New-AzBlueprintAssignment
. Den här cmdleten använder följande parametrar:
Namn [krävs]
- Anger namnet på skisstilldelningen
- Måste vara unikt och finns inte redan i SubscriptionId
Skiss [krävs]
- Anger skissdefinitionen som ska tilldelas
- Använd
Get-AzBlueprint
för att hämta referensobjektet
Plats [krävs]
- Anger regionen för den systemtilldelade hanterade identiteten och prenumerationsdistributionsobjektet som ska skapas i
Prenumeration (valfritt)
- Anger den prenumeration som tilldelningen distribueras till
- Om det inte anges används standardinställningen för den aktuella prenumerationskontexten
Lås (valfritt)
- Definierar den skissresurslåsning som ska användas för distribuerade resurser
- Alternativ som stöds: None, AllResourcesReadOnly, AllResourcesDoNotDelete
- Om det inte anges är standardvärdet Ingen
SystemAssignedIdentity (valfritt)
- Välj att skapa en systemtilldelad hanterad identitet för tilldelningen och distribuera resurserna
- Standard för parameteruppsättningen "identitet"
- Det går inte att använda med UserAssignedIdentity
UserAssignedIdentity (valfritt)
- Anger den användartilldelade hanterade identiteten som ska användas för tilldelningen och för att distribuera resurserna
- Del av parameteruppsättningen "identitet"
- Det går inte att använda med SystemAssignedIdentity
Parameter (valfritt)
En hash-tabell med nyckel/värde-par för att ange dynamiska parametrar för skisstilldelningen
Standard för en dynamisk parameter är defaultValue i definitionen
Om en parameter inte tillhandahålls och inte har något defaultValue är parametern inte valfri
Anteckning
Parametern stöder inte secureStrings.
ResourceGroupParameter (valfritt)
- En hash-tabell med resursgruppsartefakter
- Varje resursgruppsartefaktplatshållare har nyckel/värde-par för dynamisk inställning av namn och plats för resursgruppens artefakt
- Om en resursgruppsparameter inte tillhandahålls och inte har någon defaultValue är resursgruppsparametern inte valfri
AssignmentFile (valfritt)
- Sökvägen till en JSON-filrepresentation av en skisstilldelning
- Den här parametern är en del av en PowerShell-parameteruppsättning som endast innehåller Namn, Skiss och SubscriptionId, plus de vanliga parametrarna.
Exempel 1: Ange parametrar
I följande exempel skapas en ny tilldelning av version 1.1 av skissdefinitionen "my-blueprint" som hämtats med Get-AzBlueprint
, anger platsen för den hanterade identiteten och tilldelningsobjektet till "westus2", låser resurserna med AllResourcesReadOnly och anger hash-tabellerna för både Parameter och ResourceGroupParameter för en specifik prenumeration som representeras som {subId}
:
# Login first with Connect-AzAccount if not using Cloud Shell
# Get version '1.1' of the blueprint definition in the specified subscription
$bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'my-blueprint' -Version '1.1'
# Create the hash table for Parameters
$bpParameters = @{storageAccount_storageAccountType='Standard_GRS'}
# Create the hash table for ResourceGroupParameters
# ResourceGroup is the resource group artifact placeholder name
$bpRGParameters = @{ResourceGroup=@{name='storage_rg';location='westus2'}}
# Create the new blueprint assignment
$bpAssignment = New-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
-SubscriptionId '{subId}' -Location 'westus2' -Lock AllResourcesReadOnly `
-Parameter $bpParameters -ResourceGroupParameter $bpRGParameters
Exempelutdata för att skapa en skisstilldelning ser ut så här:
Name : my-blueprint-assignment
Id : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprintAssi
gnments/my-blueprint-assignment
Scope : /subscriptions/{subId}
LastModified : 2019-03-13
LockMode : AllResourcesReadOnly
ProvisioningState : Creating
Parameters : {storageAccount_storageAccountType}
ResourceGroups : ResourceGroup
Exempel 2: Använd en JSON-tilldelningsdefinitionsfil
I följande exempel skapas nästan samma tilldelning som exempel 1. I stället för att skicka parametrar till cmdleten visar exemplet användning av en JSON-tilldelningsdefinitionsfil och parametern AssignmentFile . Dessutom konfigureras egenskapen excludedPrincipals som en del av låsen. Det finns ingen PowerShell-parameter för excludedPrincipals och egenskapen kan bara konfigureras genom att ange den via JSON-tilldelningsdefinitionsfilen.
{
"identity": {
"type": "SystemAssigned"
},
"location": "westus2",
"properties": {
"description": "Assignment of the 101-blueprint-definition-subscription",
"blueprintId": "/subscriptions/{subId}/providers/Microsoft.Blueprint/blueprints/101-blueprints-definition-subscription",
"locks": {
"mode": "AllResourcesReadOnly",
"excludedPrincipals": [
"7be2f100-3af5-4c15-bcb7-27ee43784a1f",
"38833b56-194d-420b-90ce-cff578296714"
]
},
"parameters": {
"storageAccount_storageAccountType": {
"value": "Standard_GRS"
}
},
"resourceGroups": {
"ResourceGroup": {
"name": "storage_rg",
"location": "westus2"
}
}
}
}
# Login first with Connect-AzAccount if not using Cloud Shell
# Create the new blueprint assignment
$bpAssignment = New-AzBlueprintAssignment -Name 'my-blueprint-assignment' -SubscriptionId '{subId}' `
-AssignmentFile '.\assignment.json'
Ett exempel på JSON-tilldelningsdefinitionsfilen för en användartilldelad hanterad identitet finns i begärandetexten i Exempel: Tilldelning med användartilldelad hanterad identitet för REST API.
Uppdatera skisstilldelningar
Ibland är det nödvändigt att uppdatera en skisstilldelning som redan har skapats. Cmdleten Set-AzBlueprintAssignment
hanterar den här åtgärden. Cmdleten tar de flesta av samma parametrar som cmdleten New-AzBlueprintAssignment
gör, vilket gör att allt som har angetts för tilldelningen kan uppdateras. Undantagen är Namn, Skiss och SubscriptionId. Endast de angivna värdena uppdateras.
Information om vad som händer när du uppdaterar en skisstilldelning finns i Regler för uppdatering av tilldelningar.
Namn [krävs]
- Anger namnet på skisstilldelningen som ska uppdateras
- Används för att hitta tilldelningen som ska uppdateras, inte för att ändra tilldelningen
Skiss [krävs]
- Anger skissdefinitionen för skisstilldelningen
- Använd
Get-AzBlueprint
för att hämta referensobjektet - Används för att hitta tilldelningen som ska uppdateras, inte för att ändra tilldelningen
Plats (valfritt)
- Anger regionen för den systemtilldelade hanterade identiteten och prenumerationsdistributionsobjektet som ska skapas i
Prenumeration (valfritt)
- Anger den prenumeration som tilldelningen distribueras till
- Om det inte anges används standardinställningen för den aktuella prenumerationskontexten
- Används för att hitta tilldelningen som ska uppdateras, inte för att ändra tilldelningen
Lås (valfritt)
- Definierar den skissresurslåsning som ska användas för distribuerade resurser
- Alternativ som stöds: None, AllResourcesReadOnly, AllResourcesDoNotDelete
SystemAssignedIdentity (valfritt)
- Välj att skapa en systemtilldelad hanterad identitet för tilldelningen och distribuera resurserna
- Standard för parameteruppsättningen "identitet"
- Det går inte att använda med UserAssignedIdentity
UserAssignedIdentity (valfritt)
- Anger den användartilldelade hanterade identiteten som ska användas för tilldelningen och för att distribuera resurserna
- Del av parameteruppsättningen "identitet"
- Det går inte att använda med SystemAssignedIdentity
Parameter (valfritt)
En hash-tabell med nyckel/värde-par för att ange dynamiska parametrar för skisstilldelningen
Standardvärdet för en dynamisk parameter är defaultValue i definitionen
Om en parameter inte anges och inte har något defaultValue är parametern inte valfri
Anteckning
Parametern stöder inte secureStrings.
ResourceGroupParameter (valfritt)
- En hash-tabell med resursgruppsartefakter
- Varje platshållare för resursgruppsartefakter har nyckel/värde-par för dynamisk inställning av namn och plats för resursgruppens artefakt
- Om en resursgruppsparameter inte anges och inte har någon defaultValue är resursgruppsparametern inte valfri
I följande exempel uppdateras tilldelningen av version 1.1 av skissdefinitionen "my-blueprint" som hämtats med Get-AzBlueprint
genom att ändra låsläget:
# Login first with Connect-AzAccount if not using Cloud Shell
# Get version '1.1' of the blueprint definition in the specified subscription
$bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'my-blueprint' -Version '1.1'
# Update the existing blueprint assignment
$bpAssignment = Set-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
-SubscriptionId '{subId}' -Lock AllResourcesDoNotDelete
Exempelutdata för att skapa en skisstilldelning ser ut så här:
Name : my-blueprint-assignment
Id : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprintAssi
gnments/my-blueprint-assignment
Scope : /subscriptions/{subId}
LastModified : 2019-03-13
LockMode : AllResourcesDoNotDelete
ProvisioningState : Updating
Parameters : {storageAccount_storageAccountType}
ResourceGroups : ResourceGroup
Ta bort skisstilldelningar
När det är dags att ta bort en skisstilldelning hanterar cmdleten den Remove-AzBlueprintAssignment
här åtgärden. Cmdleten tar antingen Namn eller InputObject för att ange vilken skisstilldelning som ska tas bort.
SubscriptionIdkrävs och måste anges i alla fall.
Följande exempel hämtar en befintlig skisstilldelning med Get-AzBlueprintAssignment
och tar sedan bort den från den specifika prenumerationen som representeras som {subId}
:
# Login first with Connect-AzAccount if not using Cloud Shell
# Get the blueprint assignment in the specified subscription
$blueprintAssignment = Get-AzBlueprintAssignment -Name 'Assignment-lock-resource-groups'
# Remove the existing blueprint assignment
Remove-AzBlueprintAssignment -InputObject $blueprintAssignment -SubscriptionId '{subId}'
Kodexempel
När du sammanför alla steg hämtar följande exempel skissdefinitionen, skapar, uppdaterar och tar bort en skisstilldelning i den specifika prenumerationen som representeras som {subId}
:
# Login first with Connect-AzAccount if not using Cloud Shell
#region GetBlueprint
# Get version '1.1' of the blueprint definition in the specified subscription
$bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'my-blueprint' -Version '1.1'
#endregion
#region CreateAssignment
# Create the hash table for Parameters
$bpParameters = @{storageAccount_storageAccountType='Standard_GRS'}
# Create the hash table for ResourceGroupParameters
# ResourceGroup is the resource group artifact placeholder name
$bpRGParameters = @{ResourceGroup=@{name='storage_rg';location='westus2'}}
# Create the new blueprint assignment
$bpAssignment = New-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
-SubscriptionId '{subId}' -Location 'westus2' -Lock AllResourcesReadOnly `
-Parameter $bpParameters -ResourceGroupParameter $bpRGParameters
#endregion CreateAssignment
# Wait for the blueprint assignment to finish deployment prior to the next steps
#region UpdateAssignment
# Update the existing blueprint assignment
$bpAssignment = Set-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
-SubscriptionId '{subId}' -Lock AllResourcesDoNotDelete
#endregion UpdateAssignment
# Wait for the blueprint assignment to finish deployment prior to the next steps
#region RemoveAssignment
# Remove the existing blueprint assignment
Remove-AzBlueprintAssignment -InputObject $bpAssignment -SubscriptionId '{subId}'
#endregion
Nästa steg
- Mer information om livscykeln för en skiss.
- Förstå hur du använder statiska och dynamiska parametrar.
- Lär dig hur du anpassar sekvensordningen för en skiss.
- Lär dig hur du använder resurslåsning för en skiss.
- Lös problem som kan uppstå vid tilldelningen av en skiss med allmän felsökning.