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:
- Rekommenderas: Avinstallera AzureRM-modulen. Se till att ta bort alla installerade versioner av AzureRM, inte bara den senaste versionen.
- Installera Az-modulen
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
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 nödvändiga 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
. Skripten behöver nu använda andra identitetsparametrar för fakturan.
Az.Compute (tidigare AzureRM.Compute)
-
IdentityIds
tas bort från egenskapenIdentity
i objektenPSVirtualMachine
ochPSVirtualMachineScaleSet
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örPSVirtualMachineScaleSetVM
-objekt ändras frånVirtualMachineInstanceView
tillVirtualMachineScaleSetVMInstanceView
- Egenskaperna
AutoOSUpgradePolicy
ochAutomaticOSUpgrade
tas bort från egenskapenUpgradePolicy
- Typ av
Sku
-egenskap iPSSnapshotUpdate
-objekt ändras frånDiskSku
tillSnapshotSku
-
VmScaleSetVMParameterSet
tas bort från cmdletenAdd-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ånPSKeyVaultKeyAttributes
-,PSKeyVaultKeyIdentityItem
- ochPSKeyVaultSecretAttributes
-objekt Skript ska inte längre referera till egenskapenPurgeDisabled
för att fatta bearbetningsbeslut.
Az.Monitor (tidigare AzureRM.Insights)
Tog bort pluralnamnet
Categories
och parameternTimegrains
och ersatte med singularparameternamn från cmdlet-skript förSet-AzDiagnosticSetting
med hjälp avSet-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 cmdletenGet-AzServiceEndpointPolicyDefinition
- Tog bort den inaktuella egenskapen
EnableVmProtection
från objektetPSVirtualNetwork
- 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 cmdletenNew/Set-AzPolicyAssignment
Parametern
Password
har tagits bort från cmdletenNew-AzADServicePrincipal
ochNew-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
- Exempel:
- Parametern
Location
har blivit obligatorisk i cmdletenGet-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
- ochPSSite
-objekten
Nästa steg
- Läs mer om PowerShell på Azure Stack Hub i Kom igång med PowerShell i Azure Stack Hub
- Installera PowerShell Az-modulen. Mer information finns i Installera PowerShell Az-modulen för Azure Stack Hub