Dela via


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 skrivits för AzureRM-cmdletarna fungerar inte automatiskt med den nya modulen. För att göra övergången enklare erbjuder Az verktyg som gör att du kan köra dina befintliga skript med hjälp av AzureRM. Det är alltid praktiskt att inte migrera till en ny kommandouppsättning, men den här artikeln hjälper dig att komma igång med övergången till den nya modulen.

Om du vill se en fullständig lista över brytande ändringar mellan AzureRM och Az, se migreringsguiden för Az 1.0.0

Sök efter installerade versioner av AzureRM

Innan du utför några migreringssteg kontrollerar du vilka versioner av AzureRM som är installerade i systemet. På så sätt kan du se till att skript redan körs på den senaste versionen och meddela dig om du kan aktivera kommandoalias utan att avinstallera AzureRM.

Kör kommandot för att kontrollera vilka versioner av AzureRM du har installerat:

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). Se till att läsa migreringsguiden för AzureRMom dina skript inte fungerar.

Installera modulen Azure PowerShell Az

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

Följ dessa steg för att installera Azure PowerShell Az-modulen:

Aktivera AzureRM-kompatibilitetsalias

Viktig

Aktivera endast kompatibilitetsläge om du har avinstallerat alla versioner av AzureRM. Om du aktiverar kompatibilitetsläge med AzureRM-cmdletar som fortfarande är tillgängliga kan det leda till oförutsägbart beteende. Hoppa över det här steget om du har valt att behålla AzureRM installerat, men tänk på att alla AzureRM-cmdletar använder de äldre modulerna och inte anropar 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 är aktiverat med kommandot :

Enable-AzureRmAlias -Scope CurrentUser

Med alias kan du använda gamla 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 en annan -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 till 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 är aktiverat 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 Azoch samma för cmdletar. Till exempel har modulen AzureRM.Compute bytt namn till Az.Compute. New-AzureRMVM har blivit New-AzVMoch Get-AzureStorageBlob är nu Get-AzStorageBlob.

Det finns undantag till den här namngivningsändringen som du bör känna till. Vissa moduler bytte namn på eller sammanfogades till befintliga moduler utan att detta påverkade suffixet för deras cmdletar, förutom att ändra AzureRM eller Azure till Az. Annars ändrades det fullständiga cmdlet-suffixet för att återspegla det nya modulnamnet.

AzureRM-modul Az-modul Har cmdlet-suffixet ändrats?
AzureRM.Profile Az.Accounts Ja
AzureRM.Insights Az.Monitor Ja
AzureRM.Tags Az.Resources Nej
AzureRM.UsageAggregates Az.Billing Nej
AzureRM.Consumption Az.Billing Nej

Sammanfattning

Genom att följa dessa steg kan du uppdatera alla dina 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 gjorde migreringen svår kan du kommentera den här artikeln så att vi kan förbättra instruktionerna.

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

Det här dokumentet innehåller detaljerad information om ändringarna mellan AzureRM 6.x och den nya Az-modulen version 1.x och senare. Innehållsförteckningen hjälper dig genom en fullständig migreringsväg, inklusive modulspecifika ändringar som kan påverka dina skript.

Allmänna icke-bakåtkompatibla ändringar

Det här avsnittet beskriver de allmänna icke-bakåtkompatibla ändringar som ingår i omdesignen av Az-modulen.

Cmdlet-substantivprefixändringar

I AzureRM-modulen använde cmdletar antingen AzureRM eller Azure som substantivprefix. Az förenklar och normaliserar cmdlet-namn, så att alla cmdletar använder "Az" som sitt cmdlet-substantivprefix. Till exempel:

Get-AzureRMVM
Get-AzureKeyVaultSecret

Har ändrats till:

Get-AzVM
Get-AzKeyVaultSecret

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

Till exempel följande skript i AzureRM:

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

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

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

Om du kör Enable-AzureRmAlias -Scope CurrentUser aktiveras aliasen för alla PowerShell-sessioner som du öppnar, så att ett skript som detta inte behöver ändras alls när du har kört den här cmdleten:

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Fullständig information om användningen av alias-cmdletar finns i Enable-AzureRmAlias referensen.

När du är redo att inaktivera alias tar Disable-AzureRmAlias bort de skapade aliasen. Fullständig information finns i referensen för Disable-AzureRmAlias.

Viktig

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

Ä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.Återställningstjänster.Säkerhetskopiering Az.RecoveryServices
AzureRM.RecoveryServices.SiteRecovery 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 för att använda den nya modulen i stället. För moduler där cmdlet-suffixet inte har ändrats innebär det att även om modulnamnet har ändrats har suffixet som anger åtgärdsutrymmet inte.

Migrering kräver och importerar modulinstruktioner

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

#Requires -Module AzureRM.Compute

Bör ändras till:

#Requires -Module Az.Compute

För Import-Module:

Import-Module -Name AzureRM.Compute

Bör ändras till:

Import-Module -Name Az.Compute

Migrera fullständigt kvalificerade cmdlet-anrop

Skript som använder modulkvalificerade cmdlet-anrop, till exempel:

AzureRM.Compute\Get-AzureRmVM

Måste ändras för att använda de nya modul- och cmdlet-namnen:

Az.Compute\Get-AzVM

Migrera modulmanifestets beroenden

Moduler som uttrycker beroenden i AzureRM-moduler via en modulmanifestfil (.psd1) måste uppdatera modulnamnen i avsnittet RequiredModules:

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

Måste ändras till:

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

Moduler har tagits bort

Följande moduler har tagits bort:

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

Verktygen för dessa tjänster stöds inte längre aktivt. Kunder uppmuntras att övergå till alternativa tjänster så snart det är bekvämt.

Windows PowerShell 5.1 och .NET 4.7.2

Användning av Az med PowerShell 5.1 för Windows kräver installation av .NET Framework 4.7.2. Att använda PowerShell Core 6.x eller senare kräver inte .NET Framework.

Tillfällig borttagning av användarinloggning med PSCredential

På grund av ändringar i autentiseringsflödet för .NET Standard tar vi tillfälligt bort användarinloggning via PSCredential. Den här funktionen kommer att introduceras igen i versionen 1/15/2019 för PowerShell 5.1 för Windows. Detta beskrivs i detalj i det här GitHub-problemet.

Förvald enhetskodinloggning istället för en webbläsaruppmaning

På grund av ändringar i autentiseringsflödet för .NET Standard använder vi enhetsinloggning som standardinloggningsflöde under interaktiv inloggning. Webbläsarbaserad inloggning introduceras på nytt för PowerShell 5.1 för Windows som standard i utgåva 1/15/2019. Då kan användarna välja enhetsinloggning med hjälp av en Switch-parameter.

Modulbrytande ändringar

Det här avsnittet beskriver specifika brytande ändringar för enskilda moduler och cmdletar.

Az.ApiManagement (tidigare AzureRM.ApiManagement)

  • Följande cmdletar har tagits bort:
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • Använd Set-AzApiManagement cmdlet för att ange dessa egenskaper i stället
  • Följande egenskaper har tagits 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 obligatoriska 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. Skript måste använda andra identitetsparametrar för fakturan.

Az.Compute (tidigare AzureRM.Compute)

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

Az.KeyVault (tidigare AzureRM.KeyVault)

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

Az.Monitor (tidigare AzureRM.Insights)

  • Pluralnamn för parametrarna Categories och Timegrains har tagits bort till förmån för singularnamn för parametrarna från cmdlet-skriptet Set-AzDiagnosticSetting med hjälp av

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Bör ändras till

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (tidigare AzureRM.Network)

  • Tog bort inaktuell ResourceId parameter från Get-AzServiceEndpointPolicyDefinition cmdlet
  • Den inaktuella egenskapen EnableVmProtection har tagits bort från PSVirtualNetwork objekt
  • Den föråldrade cmdlet Set-AzVirtualNetworkGatewayVpnClientConfig har tagits bort

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

Az.Resources (tidigare AzureRM.Resources)

  • Tog bort Sku parameter från New/Set-AzPolicyAssignment cmdlet

  • Tog bort parameter Password från New-AzADServicePrincipal- och New-AzADSpCredential-cmdlet. Lösenorden genereras automatiskt av skript som angav lösenordet.

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

    Bör ändras för att hämta 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)

  • Om du vill ha stöd för att skapa en Oauth-lagringskontext med endast lagringskontonamnet har standardparameteruppsättningen ändrats till OAuthParameterSet
    • Exempel: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • Parametern Location har blivit obligatorisk i cmdleten Get-AzStorageUsage
  • Lagrings-API-metoderna använder nu det aktivitetsbaserade Asynkrona mönstret (TAP) i stället för synkrona API-anrop. Följande exempel visar de nya asynkrona kommandona:

Blobögonblicksbild

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

Återställ 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 objekten PSAppServicePlan, PSCertificate, PSCloningInfooch PSSite

Nästa steg