Migrera från AzureRM till Azure PowerShell Az i Azure Stack Hub

Az-modulen har funktionsparitet med AzureRM, men använder kortare och mer konsekventa cmdlet-namn. Skript som har skrivits för AzureRM-cmdletarna fungerar inte automatiskt med den nya modulen. För att underlätta övergången erbjuder Az verktyg så att du kan köra dina befintliga skript med hjälp av AzureRM. Ingen migrering till en ny kommandouppsättning är någonsin läglig, men i den här artikeln får du hjälp att komma igång med övergången till den nya modulen.

En fullständig lista över icke-bakåtkompatibla ändringar mellan AzureRM och Az finns i Migreringsguiden för Az 1.0.0

Sök efter installerade versioner av AzureRM

Innan du påbörjar migreringen bör du kontrollera vilka versioner av AzureRM som finns installerade på datorn. Då kan du se till att skripten redan körs med den senaste versionen, och du ser om det går att aktivera kommandoalias utan att avinstallera AzureRM.

Om du vill kontrollera vilka versioner av AzureRM du har installerade kör du följande kommando:

Get-InstalledModule -Name AzureRM -AllVersions

Kontrollera att aktuella skript fungerar med AzureRM

Det här är det viktigaste steget! Kör dina befintliga skript och se till att de fungerar med den senaste versionen av AzureRM (2.5.0). Om dina skript inte fungerar läser du AzureRM-migreringsguiden.

Installera Azure PowerShell Az-modulen

Första steget är att installera Az-modulen på din plattform. När du installerar Az bör du avinstallera AzureRM. I följande steg får du lära dig hur du fortsätter att köra dina befintliga skript och aktiverar kompatibilitet för gamla cmdlet-namn.

Installera Azure PowerShell Az-modulen enligt följande:

Aktivera AzureRM-kompatibilitetsalias

Viktigt

Aktivera kompatibilitetsläge endast om du har avinstallerat alla versioner av AzureRM. Om du aktiverar kompatibilitetsläge när det fortfarande finns tillgängliga AzureRM-cmdletar kan du få oväntade resultat. Hoppa över det här steget om du väljer att behålla AzureRM installerat, men tänk på att alla AzureRM-cmdletar kommer att använda de äldre modulerna och inte anropa några Az-cmdletar.

När AzureRM har avinstallerats och skripten fungerar med den senaste AzureRM-versionen är nästa steg att aktivera kompatibilitetsläget för Az-modulen. Kompatibilitet aktiveras med kommandot:

Enable-AzureRmAlias -Scope CurrentUser

Alias gör det möjligt att använda äldre cmdlet-namn med Az-modulen installerad. Dessa alias skrivs till användarprofilen för det valda omfånget. Om det inte finns någon användarprofil skapas en.

Varning

Du kan använda ett annat -Scope för det här kommandot, men det rekommenderas inte. Alias skrivs till användarprofilen för det valda omfånget, så fortsätt att aktivera dem för ett så begränsat omfång som möjligt. Aktivering av alias i hela systemet kan också orsaka problem för andra användare som har AzureRM installerat i sitt lokala omfång.

När aliasläget har aktiverats kör du skripten igen för att bekräfta att de fortfarande fungerar som förväntat.

Ändra modul- och cmdlet-namn

I allmänhet har modulnamnen ändrats så att AzureRM och Azure blir Az, och samma sak för cmdletar. AzureRM.Compute-modulens namn har till exempel ändrats till Az.Compute. New-AzureRMVM har blivit New-AzVM, och Get-AzureStorageBlob är nu Get-AzStorageBlob.

Det finns undantag för den här namngivningsändringen som du bör känna till. Vissa moduler har bytt namn eller slagits samman till befintliga modeller utan att det påverkar suffixet för deras cmdletar, förutom att AzureRM eller Azure ändras till Az. I övrigt ändras det fullständiga cmdlet-suffixet så att det återspeglar det nya modulnamnet.

AzureRM-modul Az-modul Ändrat cmdlet-suffix?
AzureRM.Profile Az.Accounts Yes
AzureRM.Insights Az.Monitor Yes
AzureRM.Tags Az.Resources No
AzureRM.UsageAggregates Az.Billing No
AzureRM.Consumption Az.Billing No

Sammanfattning

Genom att följa de här stegen kan du uppdatera alla befintliga skript så att de använder den nya modulen. Om du har några frågor eller problem med de här stegen som har gjort migreringen svår får du gärna kommentera den här artikeln så att vi kan förbättra instruktionerna.

Icke-bakåtkompatibla ändringar för Az 1.0.0

I det här dokumentet finns detaljerad information om ändringar mellan AzureRM 6.x och den nya Az-modulen, version 1.x och senare. Innehållsförteckningen leder dig genom en fullständig migrering, inklusive modulspecifika ändringar som kan påverka skripten.

Allmänna icke-bakåtkompatibla ändringar

I det här avsnittet beskriver vi de allmänna icke-bakåtkompatibla ändringarna i den nya utformningen av Az-modulen.

Ändringar i cmdlet-substantivprefix

I AzureRM-modulen är de cmdletar som används antingen AzureRM eller Azure som ett substantivprefix. Az förenklar och normaliserar cmdlet-namn så att Az används som cmdlet-substantivprefix för alla cmdletar. Ett exempel:

Get-AzureRMVM
Get-AzureKeyVaultSecret

Har ändrats till:

Get-AzVM
Get-AzKeyVaultSecret

För att göra övergången till de nya cmdlet-namnen enklare introduceras två nya cmdletar, Enable-AzureRmAlias och Disable-AzureRmAlias. Enable-AzureRmAlias skapar alias för de äldre cmdlet-namnen i AzureRM till de nyare cmdlet-namnen i Az. Med argumentet -Scope med Enable-AzureRmAlias kan du välja var alias ska aktiveras.

Till exempel kan följande skript i AzureRM:

#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Kan köras med minimala ändringar med Enable-AzureRmAlias:

#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

När Enable-AzureRmAlias -Scope CurrentUser körs kan alias aktiveras för alla PowerShell-sessioner som du öppnar, så när denna cmdlet har körts behöver ett skript som detta inte ändras alls:

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

All information om användningen av alias-cmdletar finns i referensmaterialet för Enable-AzureRmAlias.

När du är redo att inaktivera alias tar Disable-AzureRmAlias bort skapade alias. All information finns i referensmaterialet till Disable-AzureRmAlias.

Viktigt

När du inaktiverar alias ska du se till att de är inaktiverade för alla omfång som har aktiverade alias.

Ändringar av modulnamn

Modulnamnen har ändrats från AzureRM.* till Az.*, förutom följande moduler:

AzureRM-modul Az-modul
Azure.Storage Az.Storage
Azure.AnalysisServices Az.AnalysisServices
AzureRM.Profile Az.Accounts
AzureRM.Insights Az.Monitor
AzureRM.RecoveryServices Az.RecoveryServices
AzureRM.RecoveryServices Az.RecoveryServices
AzureRM.Tags Az.Resources
AzureRM.MachineLearningCompute Az.MachineLearning
AzureRM.UsageAggregates Az.Billing
AzureRM.Consumption Az.Billing

Ändringarna i modulnamnen innebär att alla skript som använder #Requires eller Import-Module för att läsa in specifika moduler måste ändras så att de använder den nya modulen i stället. För moduler där cmdletsuffixet inte har ändrats innebär det att även om modulnamnet har ändrats har suffixet som anger åtgärdsutrymmet inte det.

Migrering kräver och importerar modulinstruktioner

Skript som använder #Requires eller Import-Module för att deklarera beroende av AzureRM-moduler måste uppdateras så att de nya modulnamnen används. Ett exempel:

#Requires -Module AzureRM.Compute

Ska ändras till:

#Requires -Module Az.Compute

För Import-Module:

Import-Module -Name AzureRM.Compute

Ska ändras till:

Import-Module -Name Az.Compute

Migrera fullständigt kvalificerade cmdlet-anrop

Skript som använder modulkvalificerade cmdlet-anrop som:

AzureRM.Compute\Get-AzureRmVM

Måste ändras så att de nya modul- och cmdlet-namnen används

Az.Compute\Get-AzVM

Migrera modulmanifestberoenden

För moduler som uttrycker beroenden av AzureRM-moduler via en modulmanifestfil (.psd1) behöver modulnamnen uppdateras i avsnittet RequiredModules:

RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})

Måste ändras till:

RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})

Borttagna moduler

Följande moduler har tagits bort:

  • AzureRM.Backup
  • AzureRM.Compute.ManagedService
  • AzureRM.Scheduler

Verktygen för de här tjänsterna stöds inte längre aktivt. Kunderna rekommenderas att övergå till alternativa tjänster så snart som möjligt.

Windows PowerShell 5.1 och .NET 4.7.2

Om Az ska användas med PowerShell 5.1 för Windows måste .NET Framework 4.7.2 vara installerat. För PowerShell Core 6.x och senare krävs inte .NET Framework.

Tillfälligt borttagning av användarinloggning med PSCredential

På grund av ändringar i autentiseringsflödet för .NET Standard tar vi tillfälligt bort användarinloggning med PSCredential. Funktionen återintroduceras i version 1/15/2019/ av Windows PowerShell 5.1 för Windows. Det här diskuteras mer ingående i det här GitHub-ärendet.

Inloggning med standardenhetskod i stället för med webbläsarfråga

På grund av ändringar i autentiseringsflödet för .NET Standard använder vi enhetsinloggning som standardinloggningsflöde under interaktiv inloggning. Webbläsarbaserad webbinloggning återintroduceras som standardfunktion i version 1/15/2019 av PowerShell 5.1 för Windows. Då kan användarna välja enhetsinloggning med hjälp av en växlingsparameter.

Icke-bakåtkompatibla ändringar

I det här avsnittet beskriver vi icke-bakåtkompatibla ändringar för enskilda moduler och cmdletar.

Az.ApiManagement (tidigare AzureRM.ApiManagement)

  • Följande cmdletar togs bort:
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • Använd istället cmdleten Set-AzApiManagement för att ställa dessa egenskaper
  • Följande egenskaper togs bort:
    • Egenskapen PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration och ScmHostnameConfiguration av typen PsApiManagementHostnameConfiguration har tagits bort från PsApiManagementContext. Använd i stället PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration och ScmCustomHostnameConfiguration av typen PsApiManagementCustomHostNameConfiguration.
    • Egenskapen StaticIPs har tagits bort från PsApiManagementContext. Egenskapen har delats upp i PublicIPAddresses och PrivateIPAddresses.
    • Den nödvändiga egenskapen Location har tagits bort från cmdleten New-AzureApiManagementVirtualNetwork.

Az.Billing (tidigare AzureRM.Billing, AzureRM.Consumption och AzureRM.UsageAggregates)

  • Parametern InvoiceName har tagits bort från cmdleten Get-AzConsumptionUsageDetail. Skripten behöver nu använda andra identitetsparametrar för fakturan.

Az.Compute (tidigare AzureRM.Compute)

  • IdentityIds tas bort från egenskapen Identity i objekten PSVirtualMachine och PSVirtualMachineScaleSet Skripten bör nu inte längre använda värdet för det här fältet för att fatta bearbetningsbeslut.
  • Typ av InstanceView-egenskap för PSVirtualMachineScaleSetVM-objekt ändras från VirtualMachineInstanceView till VirtualMachineScaleSetVMInstanceView
  • Egenskaperna AutoOSUpgradePolicy och AutomaticOSUpgrade tas bort från egenskapen UpgradePolicy
  • Typ av Sku-egenskap i PSSnapshotUpdate-objekt ändras från DiskSku till SnapshotSku
  • VmScaleSetVMParameterSet tas bort från cmdleten Add-AzVMDataDisk, och du kan inte längre lägga till en datadisk individuellt till en virtuell ScaleSet-dator.

Az.KeyVault (tidigare AzureRM.KeyVault)

  • Egenskapen PurgeDisabled har tagits bort från PSKeyVaultKeyAttributes-, PSKeyVaultKeyIdentityItem- och PSKeyVaultSecretAttributes-objekt Skript ska inte längre referera till egenskapen PurgeDisabled för att fatta bearbetningsbeslut.

Az.Monitor (tidigare AzureRM.Insights)

  • Tog bort pluralnamnet Categories och parametern Timegrains och ersatte med singularparameternamn från cmdlet-skript för Set-AzDiagnosticSetting med hjälp av

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Ska ändras till

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (tidigare AzureRM.Network)

  • Tog bort den inaktuella parametern ResourceId från cmdleten Get-AzServiceEndpointPolicyDefinition
  • Tog bort den inaktuella egenskapen EnableVmProtection från objektet PSVirtualNetwork
  • Tog bort den inaktuella cmdleten Set-AzVirtualNetworkGatewayVpnClientConfig

Skript bör inte längre fatta bearbetningsbeslut baserat på värdena för dessa fält.

Az.Resources (tidigare AzureRM.Resources)

  • Parametern Sku har tagits bort från cmdleten New/Set-AzPolicyAssignment

  • Parametern Password har tagits bort från cmdleten New-AzADServicePrincipal och New-AzADSpCredential Lösenord genereras automatiskt och skript som tillhandahöll lösenordet:

    New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
    

    Bör ändras så att de hämtar lösenordet från utdata:

    $credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    $secPassword = $credential.Secret
    

Az.Storage (tidigare Azure.Storage och AzureRM.Storage)

  • Standardparameteruppsättningen har ändrats till OAuthParameterSet för att det ska gå att skapa en Oauth-lagringskontext endast med namnet på lagringskontot
    • Exempel: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • Parametern Location har blivit obligatorisk i cmdleten Get-AzStorageUsage
  • Storage-API-metoderna använder nu TAP (uppgiftsbaserat asynkront mönster) i stället för synkrona API-anrop. Följande exempel visar de nya asynkrona kommandona:

Ögonblicksbild av blob

AzureRM:

$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$b.ICloudBlob.Snapshot()

Az:

$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$task = $b.ICloudBlob.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result

Dela ögonblicksbild

AzureRM:

$Share = Get-AzureStorageShare -Name $containerName -Context $ctx
$snapshot = $Share.Snapshot()

Az:

$Share = Get-AzStorageShare -Name $containerName -Context $ctx
$task = $Share.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result

Ångra borttagning av mjukborttagen blob

AzureRM:

$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$b.ICloudBlob.Undelete()

Az:

$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$task = $b.ICloudBlob.UndeleteAsync()
$task.Wait()

Ange blobnivå

AzureRM:

$blockBlob = Get-AzureStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$blockBlob.ICloudBlob.SetStandardBlobTier("hot")

$pageBlob = Get-AzureStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$pageBlob.ICloudBlob.SetPremiumBlobTier("P4")

Az:

$blockBlob = Get-AzStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$task = $blockBlob.ICloudBlob.SetStandardBlobTierAsync("hot")
$task.Wait()

$pageBlob = Get-AzStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$task = $pageBlob.ICloudBlob.SetPremiumBlobTierAsync("P4")
$task.Wait()

Az.Websites (tidigare AzureRM.Websites)

  • Inaktuella egenskaper har tagits bort från PSAppServicePlan-, PSCertificate-, PSCloningInfo- och PSSite-objekten

Nästa steg