Automatisera övergången till pay-as-you-go SQL-licensiering i stor skala

Gäller för:Azure SQL DatabaseAzure SQL Managed InstanceSQL Server på Azure Virtual MachinesSQL Server aktiverat av Azure Arc

I den här artikeln beskrivs hur du:

  • Granska och övergå flera SQL-produkter till pay-as-you-go-licens med ett enda PowerShell-skript.
  • Upprätthåll kontinuerligt pay-as-you-go-licensiering för en resurstyp med Azure Policy.

Automatiseringen i denna artikel gäller SQL Server som aktiveras av Azure Arc, SQL Server på Azure Virtual Machines, Azure SQL Database och Azure SQL Managed Instance.

Att ändra ett licensavtal ändrar inte licenstypen som är konfigurerad för dina SQL-resurser. Arbetsflödena i den här artikeln hjälper dig att flytta resurser till fakturering enligt betala per användning när SQL-licenser med Software Assurance, SQL-prenumerationslicenser eller licensiering enligt Service Provider License Agreement (SPLA) inte längre gäller.

Förutsättningar

  • Ett Azure-konto med åtkomst till klientorganisationen och de prenumerationer som innehåller SQL-resurserna.
  • PowerShell 5 eller senare med Az PowerShell-modulen.
  • Rollen Deltagare i varje prenumeration som du ändrar. För alternativ med minsta privilegium, granska Behörigheter efter resurstyp.
  • I schemalagt läge krävs behörighet att skapa rolltilldelningar inom målprenumerationens omfång, eller att de nödvändiga rollerna är tilldelade i förväg till Automation-kontots hanterade identitet.
  • Befogenhet att ändra faktureringsinställningar och intyga licensvillkoren för målresurserna.

Skriften använder Az.Accounts, Az.Sql, Az.SqlVirtualMachine, Az.ConnectedMachine, och Az.ResourceGraph. När en nödvändig modul saknas uppmanar skriptet användaren att bekräfta innan den installeras från PowerShell Gallery för den aktuella användaren.

Du kan köra skriptet i PowerShell-miljön i Azure Cloud Shell. Ange -TenantId när ditt konto kan komma åt mer än en hyresgäst.

Välj en automatiseringsmetod

Välj mellan:

  • PowerShell för resursöverskridande övergångar till pay-as-you-go-licensiering.
  • Azure Policy för kontinuerlig tillämpning av betala per användning för en resurstyp.

Följande tabell ger detaljer om varje automatiseringsmetod:

Scenario Rekommenderad metod
Granska eller tillämpa pay-as-you-go-ändringar över flera SQL-resurstyper manage-payg-transition.ps1
Överför alla resurser som stöds i en prenumeration eller klientorganisation till licensiering enligt principen betala per användning manage-payg-transition.ps1
Utför en övergång till betala per användning enligt ett återkommande schema manage-payg-transition.ps1 i schemalagt läge
Tillämpa kontinuerligt licensiering enligt modellen betala per användning för en resurstyp och åtgärda avvikelser Ett resursspecifikt exempel på Azure Policy
Byt en resurs manuellt Den produktspecifika artikeln om licensiering

Granska stödda resurser och licensvärden

Procedurerna i denna artikel sätter -TargetLicenseType till PAYG. Skriptet översätter detta värde till det pay-as-you-go-värde som krävs av varje resursleverantör. Källvärdena visar vanliga licenskonfigurationer som övergången kan ersätta.

Resource Målvärde med betalning efter användning Gemensamma källvärden Stöds av manuset Azure Policy-exempel
SQL Server aktiverat av Azure Arc PAYG Paid, LicenseOnly Ja Efterlevnad för Arc-aktiverad SQL Server-licenstyp
SQL Server på Azure-virtuella maskiner PAYG AHUB Ja SQL Server on Azure VMs licenstypsöverensstämmelse
Azure SQL Database och elastiska pooler LicenseIncluded BasePrice Ja Efterlevnad för licenstyp för Azure SQL Database
Azure SQL Managed Instance och instanspooler LicenseIncluded BasePrice, HybridFailoverRights Ja SQL Managed Instance-licenstypsöverensstämmelse

Policyexemplen kan skriva över ytterligare källvärden, till exempel DR för SQL Server på Azure-VM:ar. Gå igenom det valda exemplet innan du implementerar en policyuppdrag.

Förstå hur PowerShell-skriptet fungerar

Använd PowerShell-skriptet för att ändra alla resurser inom en resursgrupp, alla resurser inom en prenumeration och alla resurser över en eller flera prenumerationer inom en hel hyresgäst.

Skriptet är självständigt och fungerar över de stödda SQL-resurserna. När du sätter -TargetLicenseType till standard PAYG, översätts det värdet till pay-as-you-go-värdet som krävs för varje resurstyp, som visas i Granska stödda resurser och licensvärden. Vid en enda körning ansluter den till den valda hyresgästen en gång och återanvänder sessionen för efterföljande resursoperationer. Prenumerationsupptäckt är begränsad till den hyresgästen.

När skriptet återanvänder en befintlig Azure-session ber det dig bekräfta kontot och hyresgästen. Gå igenom dessa detaljer innan du fortsätter. För obevakade körningar anger du -Force för att hoppa över uppmaningar om kontobekräftelse och installation av saknade moduler. Utan -Force, slutar skriptet om det behöver bekräftelse i en icke-interaktiv session. Denna switch ger inte behörigheter eller ersätter autentisering.

Skriptet försöker igen vid övergående Azure- och autentiseringsfel med successivt ökande fördröjningar. Om den inte kan lösa de valda prenumerationerna efter att ha försökt igen, stannar den och rapporterar felet istället för att behandla omfattningen som tom.

Som standard finns den genererade arbetsmappen kvar efter att skriptet är klart. För att ta bort den när körningen är klar, anger du -cleanDownloads $true.

Skriptet skriver ut en sammanfattning efter resurstyp och listar orsaken till varje misslyckad eller hoppad resurs. När skriptet hittar matchande resurser skapar det också en ModifiedResources_<timestamp>.csv rapport med UpdateResult och UpdateError kolumner.

Följande parametrar styr skriptets omfattning och exekvering:

Parameter Godkänt värde eller standardvärde Purpose
-Target Arc, Azure, eller Both (standard) Väljer SQL Server som aktiveras av Azure Arc-resurser, Azure SQL-resurser inklusive SQL Server på Azure-VM:er, eller båda grupperna.
-RunMode Single (standard) eller Scheduled Kör övergången en gång eller konfigurerar dagliga Azure Automation-runbooks.
-TargetLicenseType PAYG Väljer pay-as-you-go som mållicensmodell för procedurerna i denna artikel.
-targetSubscription Prenumerations-ID; alla prenumerationer i klienten som är tillgängliga som standard Begränsar övergången till en prenumeration.
-targetResourceGroup Resursgruppsnamn; alla resursgrupper som standard Begränsar övergången till en resursgrupp.
-TenantId Tenant ID; nuvarande Az PowerShell-kontext som standard Väljer Microsoft Entra-tenanten.
-ReportOnly Switch; inaktiverad som standard Rapporterar kvalificerande resurser utan att ändra dem.
-Force Switch; inaktiverad som standard Hoppar över installation av moduler som saknas och bekräftelsefrågor för konto/tenant. Krävs för obevakade körningar som behöver dessa bekräftelser.
-WaitForCompletion Switch; inaktiverad som standard Väntar på inskickade ändringar för att nå ett terminalt tillstånd när det stöds.
-UsePcoreLicense No (standard) eller Yes Kontrollerar licensiering av fysiska kärnor för SQL Server som aktiveras av Azure Arc.
-AutomationAccResourceGroupName Obligatoriskt med -RunMode Scheduled Väljer resursgruppen för Automation-kontot.
-AutomationAccountName aaccAzureArcSQLLicenseType som standard Sätter namnet på Automation-kontot.
-Location Obligatoriskt med -RunMode Scheduled Väljer Azure-regionen för automationskontot och resursgruppen.
-cleanDownloads $false (standard) eller $true Tar bort den genererade arbetsmappen efter att skriptet är klart.

Standardexekveringsbeteendet beror på resurstypen:

Resource Standardbeteende Med -WaitForCompletion
Azure SQL Database, elastiska pooler, Azure SQL Managed Instance och instanspooler Startar ett asynkront PowerShell-jobb med -AsJob och rapporterar RequestSubmitted Väntan och rapporter Updated
SQL Server aktiverat av Azure Arc Skickar in en asynkron tilläggsuppdatering och rapporterar RequestSubmitted Avfrågar tillägget och rapporterar Succeeded, Failed eller TimedOut
SQL Server på Azure-virtuella maskiner Väntan och rapporter Updated Samma beteende

Förhandsgranska övergången till betala efter användning

Skriptet manage-payg-transition.ps1 ger en ingångspunkt för Azure SQL och SQL Server som aktiveras av Azure Arc-resurser.

Med PowerShell-skriptet kan du ange en enda prenumeration att scanna. Om du inte specificerar en prenumeration skannar skriptet alla prenumerationer som din roll kan komma åt.

  1. Ladda ned skriptet.

    $scriptUri = "https://raw.githubusercontent.com/microsoft/sql-server-samples/master/samples/manage/manage-payg-transition/manage-payg-transition.ps1"
    Invoke-WebRequest -Uri $scriptUri -OutFile ".\manage-payg-transition.ps1"
    
  2. Logga in i klientorganisationen som innehåller resurserna.

     Connect-AzAccount -TenantId "<tenant-id>"
    
  3. Utför en skrivskyddad förhandsvisning för en enskild prenumeration. Specificera -TenantId även när du redan har en Azure-kontext så att skriptet inte använder fel tenant:

    .\manage-payg-transition.ps1 `
        -Target Both `
        -TenantId "<tenant-id>" `
        -targetSubscription "<subscription-id>" `
        -TargetLicenseType PAYG `
        -ReportOnly
    
  4. Om manuset hittar matchande resurser, öppna den senaste ModifiedResources_<timestamp>.csv rapporten. Bekräfta att varje listad resurs ska ändras:

    $report = Get-ChildItem -Filter "ModifiedResources_*.csv" |
        Sort-Object LastWriteTime -Descending |
        Select-Object -First 1
    
    Import-Csv $report.FullName | Format-Table
    

Resurser som redan använder pay-as-you-go-licens finns inte med i rapporten. Om skriptet inte hittar några matchande resurser skapar det ingen CSV-fil. För att minska omfattningen, specificera -targetResourceGroup. Ställ -Target in på Azure för att bearbeta Azure SQL-resurser, inklusive SQL Server på Azure VM:er. Ange värdet till Arc så att endast SQL Server-resurser som är Azure Arc-aktiverade bearbetas.

Kör en engångs pay-as-you-go-övergång med PowerShell

Kör pay-as-you-go-övergången först efter att du bekräftat målomfattningen och godkänt varje resurs i förhandsgranskningsrapporten.

  1. Ta bort -ReportOnly, och lägg till -WaitForCompletion för att vänta på bekräftade utfall där resursleverantören stödjer dem:

    .\manage-payg-transition.ps1 `
        -Target Both `
        -TenantId "<tenant-id>" `
        -targetSubscription "<subscription-id>" `
        -TargetLicenseType PAYG `
        -WaitForCompletion
    
  2. Gå igenom den genererade CSV-rapporten. Undersök varje Failed resultat TimedOut och bekräfta resursstatusen för varje inskickad ändring.

Värdet PAYG anger betala per användning som mållicensmodell.

Om du utelämnar -WaitForCompletion får asynkrona ändringar UpdateResult värdet RequestSubmitted. Detta resultat bekräftar inte att ändringen av licenstypen har slutförts. SQL Server på Azure VM-uppdateringar väntar alltid och rapporterar Updated efter en lyckad uppdatering.

Schemalägg återkommande pay-as-you-go-övergångar med PowerShell

Schemalagt läge skapar eller uppdaterar en Azure Automation-runbook för varje valt mål, länkar varje runbook till ett dagligt schema och startar ett engångsjobb omedelbart. Tillhandahåll en resursgrupp för automationskonto och Azure-region. Standardnamnet på Automation-kontot är aaccAzureArcSQLLicenseType. Schemalagt läge använder Automation-kontots hanterade identitet.

  1. Schemalägg övergången för Azure SQL och SQL Server som aktiveras av Azure Arc-resurser i en och samma prenumeration:

    .\manage-payg-transition.ps1 `
        -Target Both `
        -RunMode Scheduled `
        -TenantId "<tenant-id>" `
        -targetSubscription "<subscription-id>" `
        -TargetLicenseType PAYG `
        -AutomationAccResourceGroupName "<automation-resource-group>" `
        -AutomationAccountName "<automation-account>" `
        -Location "<azure-region>"
    
  2. I Automation-kontot kontrollerar du att runbooksen är publicerade, länkade till ett dagligt schema och kan starta ett jobb med de valda parametrarna.

Om Azure-målet inkluderar SQL Managed Instance-pooler tilldelar du Automation-kontots hanterade identitet rollen Deltagare eller en anpassad roll med Microsoft.Sql/instancePools/read och Microsoft.Sql/instancePools/write. Den schemalagda installationen tilldelar inte en inbyggd roll som ger dessa behörigheter.

Verkställ pay-as-you-go-licensiering med Azure Policy

Använd ett resursspecifikt exempel på Azure Policy för att kontinuerligt upprätthålla pay-as-you-go-licensiering och åtgärda konfigurationsdrift. Varje exempel innehåller en policydefinition, ett distributionsskript och ett åtgärdsskript.

Varning

En policytilldelning kan ändra varje matchande resurs i dess omfattning. Börja med en snävt begränsad testprenumeration och välj endast de nuvarande licenstyper som du tänker ersätta.

Följande tabell länkar policypaketet och distributionsskriptet för varje resurs:

Resource Policypaket Distributionsskript
SQL Server aktiverat av Azure Arc Efterlevnad för Arc-aktiverad SQL Server-licenstyp deployment.ps1
SQL Server på Azure-virtuella maskiner SQL Server on Azure VMs licenstypsöverensstämmelse deployment.ps1
Hanterad instans i Azure SQL SQL Managed Instance-licenstypsöverensstämmelse deployment.ps1
Azure SQL Database Efterlevnad för licenstyp för Azure SQL Database deployment.ps1

Använd värdena och rollerna för den valda resurstypen:

Resource Målvärde med betalning efter användning Källvärden som du kan skriva över Primär obligatorisk roll Viktig begränsning
SQL Server aktiverat av Azure Arc PAYG Paid; Portaldefinitionen stöder också LicenseOnly Azure-tillägg för distribution av SQL Server Tilldelningen använder samma mål för alla matchande värdar och tar inte hänsyn till edition. Hantera blandade dödsbon separat.
SQL Server på Azure-virtuella maskiner PAYG AHUB, DR Bidragsgivare till virtuell maskin Målet måste uppfylla licensvillkoren för Azure Hybrid Benefit eller för passiv hög tillgänglighet eller katastrofåterställning (HA/DR).
Hanterad instans i Azure SQL LicenseIncluded BasePrice, HybridFailoverRights SQL Managed Instance Contributor HybridFailoverRights anger licenseType till BasePrice och hybridSecondaryUsage till Passive.
Azure SQL Database LicenseIncluded BasePrice SQL DB-medarbetare Policyn exkluderar master och grundläggande databaser. Azure SQL Database stöder endast licenstypändringar för provisionerade vCore-databaser, så exkludera eller undanta andra databastransaktionsenheter (DTU)-baserade och serverlösa databaser från tilldelningen.

Varje uppgift kräver också läsare och resurspolicybidragsgivare. Distributionsskripten ger de nödvändiga rollerna när den inloggade identiteten har behörighet att skapa rolltilldelningar. Använd -GrantMissingPermissions med saneringsskriptet för att kontrollera och lägga till saknade roller.

Distributionsskripten för SQL VM, SQL Managed Instance och SQL Database begär bekräftelse när målvärdet kräver licensattestering. -SkipLicenseConfirmation Använd endast i en automatiserad pipeline där operatören redan har bekräftat behörighet och tar ansvar för efterlevnad.

För Arc-aktiverad SQL Server konfigurerar en PAYG policy även återkommande faktureringssamtycke. Samtycket kvarstår på förlängningen om en senare överlåtelse ändrar licenstypen bort från PAYG.

Policypaketen använder ett delat distributionsflöde:

  1. Ladda ner paketets policy och scripts mapparna genom att följa dess README-instruktioner.

  2. Logga in i den tenant som innehåller tilldelningens omfattning:

    Connect-AzAccount -TenantId "<tenant-id>"
    
  3. Från mappen för nedladdade paket, distribuera definitionen och tilldelningen. Använd pay-as-you-go-målvärdet för din resurstyp från föregående tabell. Följande exempel tilldelar policyn på prenumerationsnivå:

    .\scripts\deployment.ps1 `
        -SubscriptionId "<subscription-id>" `
        -TargetLicenseType "<pay-as-you-go-value>"
    

    Om du utelämnar -SubscriptionId, använder skriptet management group scope. Granska paketets standardinställningar innan du kör distributionen.

  4. Kontrollera att principtilldelningen har en systemtilldelad hanterad identitet och de roller som krävs inom tilldelningens omfång.

  5. Påbörja sanering för befintliga resurser som inte följer reglerna:

    .\scripts\start-remediation.ps1 `
        -SubscriptionId "<subscription-id>" `
           -TargetLicenseType "<pay-as-you-go-value>" `
        -GrantMissingPermissions
    
  6. I Azure Policy, granska uppgiftens efterlevnadsresultat och åtgärdsuppgift. Bekräfta sedan licenstypen på de sanerade resurserna.

Validera övergången till betala efter användning

CSV-rapporten innehåller en UpdateResult och an UpdateError för varje vald resurs. Tolka vanliga resultat enligt följande:

Result Meaning Nästa åtgärd
ReportOnly Skriptet identifierade en kvalificerande resurs i skrivskyddat läge och skickade ingen ändring. Bekräfta att resursen ska använda pay-as-you-go-licens innan du genomför övergången.
RequestSubmitted Azure accepterade en asynkron förfrågan. Vänta tills resursoperationen är klar och validera sedan resurstillståndet.
Updated eller Succeeded Skriptet noterade ett lyckat resultat i terminalen. Bekräfta licenstypen på resursen.
Failed Tjänsten avvisade uppdateringen eller returnerade ett misslyckat terminaltillstånd. Granska UpdateError, rätta till problemet och kör förhandsvisningen igen.
TimedOut Arc-tillägget uppnådde inte ett slutligt tillstånd innan pollinggränsen uppnåddes. Kontrollera anknytningsstatusen. Uppdateringen kan slutföras efter att skriptet slutar vänta.
SkippedNotRunning SQL Server-VM:n körs inte, så skriptet uppdaterade den inte. Starta VM:n när det är lämpligt och kör övergången igen.

För att bekräfta den aktuella licenstypen och provisioneringstillståndet för SQL Server som aktiveras av Azure Arc, kör följande Azure Resource Graph-fråga:

Search-AzGraph -Query @"
resources
| where type =~ 'microsoft.hybridcompute/machines/extensions'
| where properties.type in~ ('WindowsAgent.SqlServer', 'LinuxAgent.SqlServer')
| project name = split(id, '/')[8],
          licenseType = properties.settings.LicenseType,
          state = properties.provisioningState
"@

När inskickade operationer är klara, kör samma scope igen med -ReportOnly:

.\manage-payg-transition.ps1 `
    -Target Both `
    -TenantId "<tenant-id>" `
    -targetSubscription "<subscription-id>" `
    -TargetLicenseType PAYG `
    -ReportOnly

Skriptet exkluderar resurser som redan använder pay-as-you-go-licens. Ett helt konvergerat omfång rapporterar att det inte finns några resurser att uppdatera. Undersök alla resurser som fortfarande finns innan du anser övergången slutförd.

Granska begränsningar och faktureringsskydd

  • SQL Server på Azure-VM:ar måste köras. Skriptet hoppar över stoppade eller avallokerade VM:ar och startar dem inte.
  • Skriptet utesluter SQL Server på Azure-VM:ar som använder DR licenstypen, så det skriver inte över licensinställningen för en passiv HA/DR-replik.
  • Skriptet visar inte alternativet för återkommande faktureringssamtycke i sin inbyggda Arc-hanterare. För CSP-hanterade Arc-resurser som kräver samtycke till återkommande fakturering använder du principen licenstypsefterlevnad för Arc-aktiverad SQL Server, som konfigurerar samtycket när den tillämpas PAYG.
  • En asynkron körning som standard prioriterar skalbarhet framför direkt bekräftelse. Använd -WaitForCompletion när du behöver skriptet för att observera terminalresultaten innan det avslutas.
  • SQL Server på Azure VM-uppdateringar väntar alltid på att operationen ska bli klar, oavsett om du anger -WaitForCompletion.

Felsök automatiseringsfel

Använd den genererade rapporten och Azure-operationens status för att identifiera resurser som inte uppdaterades.

  • Om rapporten är tom, bekräfta hyresgästen, prenumerationen och resursgruppen. En tom rapport kan förväntas när alla resurser som omfattas redan använder pay-as-you-go-licenser.
  • Om en Arc-aktiverad resurs utelämnas återupprättar du anslutningen till Azure Connected Machine-agenten, bekräftar att provisioneringstillståndet för Azure-tillägget för SQL Server är Succeeded, och kör sedan förhandsvisningen igen.
  • Om UpdateResult är RequestSubmitted, behandla inte förfrågan som slutförd. Kontrollera resursstatusen eller kör förhandsversionen igen efter att Azure-operationen är klar.
  • Om en Azure SQL- eller SQL Server-operation på Azure VM misslyckas, granska det rapporterade felet, bekräfta att de nödvändiga Az PowerShell-modulerna finns tillgängliga och kontrollera att ditt konto är auktoriserat för målprenumerationen.
  • Om en oövervakad körning stannar vid en installation eller en kontobekräftelse, verifiera klientorganisationen och kontot och kör sedan om med -Force efter att du har godkänt dessa åtgärder.
  • Om schemalagt läge misslyckas, bekräfta att Automation-kontots hanterade identitet har de roller som anges i källprovet.
  • Om policykorrigeringen returnerar PolicyAuthorizationFailed, bekräfta att tilldelningens identitet har den produktspecifika rollen Reader och Resource Policy Contributor i tilldelningens omfång. Kör om distributionsskriptet, eller kör remediation-skriptet med -GrantMissingPermissions efter att den inloggade identiteten kan skapa rolltilldelningar.

För hela källan, se manage-payg-transition.ps1.

Behörigheter efter resurstyp

Behörigheter för PowerShell-skriptet

Rollen Contributor omfattar alla de behörigheter som krävs av skriptet i den här artikeln och är det enklaste alternativet. För åtkomst med minsta privilegium, tilldela de roller som krävs för resurstyperna i omfattningen:

Resurstyp Roll eller nödvändiga behörigheter
SQL Server på Azure-virtuella maskiner Bidragsgivare till virtuell maskin
Hanterad instans i Azure SQL SQL Managed Instance Contributor
Azure SQL Database SQL DB-medarbetare
Azure SQL Database elastiska pooler SQL Server-deltagare
Azure SQL Managed Instance-pooler Bidragsgivare, eller en anpassad roll med Microsoft.Sql/instancePools/read och Microsoft.Sql/instancePools/write
SQL Server aktiverat av Azure Arc Resursadministratör för azure-ansluten dator
Läsning och uppräkning av prenumerationer och resurser Läsare, om inte en annan tilldelad roll ger de nödvändiga läsbehörigheterna

Behörigheter för Azure Policy

Identiteten som körs deployment.ps1 behöver behörighet för att skapa policydefinitioner vid den valda ledningsgruppen och för att skapa policytilldelningar, åtgärdsuppgifter, hanterade identiteter och rolltilldelningar vid tilldelningsområdet. Om den inte kan skapa rolltilldelningar, tilldela de nödvändiga rollerna till policytilldelningens hanterade identitet innan du påbörjar åtgärden, och kör deployment.ps1 med -SkipManagedIdentityRoleAssignment.

Som standard skapar deployment.ps1 en systemtilldelad hanterad identitet för policytilldelningen och tilldelar tre roller på tilldelningsomfånget. Den produktspecifika rollen beror på det valda policyprovet:

Exempel på policypolitik Produktspecifik roll
SQL Server aktiverat av Azure Arc Azure-tillägg för distribution av SQL Server
SQL Server på Azure-virtuella maskiner Bidragsgivare till virtuell maskin
Hanterad instans i Azure SQL SQL Managed Instance Contributor
Azure SQL Database SQL DB-medarbetare

Varje policytilldelningsidentitet kräver också läsare och resurspolicybidragsgivare. Distributionsskriptet hoppar över automatisk rolltilldelning endast när du anger -SkipManagedIdentityRoleAssignment.

Innan du påbörjar reparationen, start-remediation.ps1 kontrollera policytilldelningsidentiteten för alla tre nödvändiga roller. Om en roll saknas stannar manuset av. Tilldela rollerna manuellt, eller kör åtgärdsskriptet igen med -GrantMissingPermissions från en identitet som kan skapa rolltilldelningar på tilldelningsomfånget.