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:
- Rekommenderas: Avinstallera modulen AzureRM. Se till att du tar bort alla installerade versioner av AzureRM, inte bara den senaste versionen.
- Installera 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 Az
och samma för cmdletar.
Till exempel har modulen AzureRM.Compute
bytt namn till Az.Compute
.
New-AzureRMVM
har blivit New-AzVM
och 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
ochScmHostnameConfiguration
av typenPsApiManagementHostnameConfiguration
har tagits bort frånPsApiManagementContext
. Använd i ställetPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
ochScmCustomHostnameConfiguration
av typenPsApiManagementCustomHostNameConfiguration
. - Egenskapen
StaticIPs
har tagits bort från PsApiManagementContext. Egenskapen har delats upp iPublicIPAddresses
ochPrivateIPAddresses
. - Den obligatoriska egenskapen
Location
har tagits bort från cmdleten New-AzureApiManagementVirtualNetwork.
- Egenskapen
Az.Billing (tidigare AzureRM.Billing, AzureRM.Consumption och AzureRM.UsageAggregates)
- Parametern
InvoiceName
har tagits bort från cmdletenGet-AzConsumptionUsageDetail
. Skript måste använda andra identitetsparametrar för fakturan.
Az.Compute (tidigare AzureRM.Compute)
-
IdentityIds
tas bort från egenskapenIdentity
iPSVirtualMachine
ochPSVirtualMachineScaleSet
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örPSVirtualMachineScaleSetVM
objekt ändras frånVirtualMachineInstanceView
tillVirtualMachineScaleSetVMInstanceView
- egenskaper för
AutoOSUpgradePolicy
ochAutomaticOSUpgrade
tas bort från egenskapenUpgradePolicy
- Typen av
Sku
egenskap iPSSnapshotUpdate
objekt ändras frånDiskSku
tillSnapshotSku
-
VmScaleSetVMParameterSet
tas bort frånAdd-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ånPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
ochPSKeyVaultSecretAttributes
-objekt Skript bör inte längre referera till egenskapenPurgeDisabled
för att fatta bearbetningsbeslut.
Az.Monitor (tidigare AzureRM.Insights)
Pluralnamn för parametrarna
Categories
ochTimegrains
har tagits bort till förmån för singularnamn för parametrarna från cmdlet-skriptetSet-AzDiagnosticSetting
med hjälp avSet-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ånGet-AzServiceEndpointPolicyDefinition
cmdlet - Den inaktuella egenskapen
EnableVmProtection
har tagits bort frånPSVirtualNetwork
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ånNew/Set-AzPolicyAssignment
cmdletTog bort parameter
Password
frånNew-AzADServicePrincipal
- ochNew-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
- Exempel:
- Parametern
Location
har blivit obligatorisk i cmdletenGet-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
,PSCloningInfo
ochPSSite
Nästa steg
- Läs mer om PowerShell på Azure Stack Hub i Komma igång med PowerShell i Azure Stack Hub
- Installera PowerShell Az-modulen, se Installera PowerShell Az-modulen för Azure Stack Hub