Migreren van AzureRM naar Azure PowerShell Az in Azure Stack Hub
De Az-module heeft functiepariteit met AzureRM, maar gebruikt kortere en consistentere cmdlet-namen. Scripts die zijn geschreven voor de AzureRM-cmdlets werken niet automatisch met de nieuwe module. Voor een gemakkelijkere overgang biedt Az hulpprogramma's waarmee u uw huidige scripts die gebruikmaken van AzureRM kunt uitvoeren. Migreren naar een nieuwe opdrachtset is nooit fijn, maar in dit artikel helpen we u aan de slag met de overgang naar de nieuwe module.
Zie voor de volledige lijst met wijzigingen die fouten veroorzaken tussen AzureRM en Az de Az 1.0.0-migratiehandleiding
Controleer op geïnstalleerde versies van AzureRM
Controleer voordat u migratiestappen onderneemt welke versies van AzureRM op uw systeem zijn geïnstalleerd. Zo komt u erachter of uw scripts volgens de nieuwste versie worden uitgevoerd en of u opdrachtaliassen kunt inschakelen zonder AzureRM te verwijderen.
Voer de opdracht uit om te kijken welke versie(s) van AzureRM u hebt geïnstalleerd:
Get-InstalledModule -Name AzureRM -AllVersions
Controleren of huidige scripts werken met AzureRM
Dit is de belangrijkste stap! Voer uw bestaande scripts uit en zorg ervoor dat ze werken met de nieuwste versie van AzureRM (2.5.0). Als uw scripts niet werken, leest u de migratiehandleiding van AzureRM.
De Az-module van Azure PowerShell installeren
U moet om te beginnen de Az-module op uw platform installeren. Wanneer u Az installeert, verdient het aanbeveling AzureRM te verwijderen. In de volgende stappen wordt uitgelegd hoe u uw huidige scripts kunt blijven uitvoeren en hoe u compatibiliteit met oude cmdlet-namen kunt inschakelen.
Ga als volgt te werk om de Az-module van Azure PowerShell te installeren:
- Aanbevolen: verwijder de AzureRM-module. Zorg ervoor dat u alle geïnstalleerde versies van AzureRM verwijdert, niet alleen de recentste versie.
- De Az-module installeren
Compatibiliteitsaliassen van AzureRM inschakelen
Belangrijk
Schakel de compatibiliteitsmodus alleen in als u alle versies van AzureRM hebt verwijderd. De compatibiliteitsmodus inschakelen terwijl de AzureRM-cmdlets nog steeds beschikbaar zijn, kan leiden tot onvoorspelbaar gedrag. Sla deze stap over als u AzureRM wilt behouden. Houd er echter rekening mee dat AzureRM-cmdlets de oudere modules gebruiken en geen Az-cmdlets aanroepen.
Wanneer u AzureRM hebt verwijderd en uw scripts werken met de nieuwste versie van AzureRM, is de volgende stap het inschakelen van de compatibiliteitsmodus voor de Az-module. Gebruik de volgende opdracht om compatibiliteit in te schakelen:
Enable-AzureRmAlias -Scope CurrentUser
Met aliassen kunt u de oude cmdlet-namen gebruiken met de geïnstalleerde Az-module. Deze aliassen worden voor het geselecteerde bereik naar het gebruikersprofiel geschreven. Als er geen gebruikersprofiel bestaat, wordt er een gemaakt.
Waarschuwing
U kunt een andere -Scope voor deze opdracht gebruiken, maar dat raden we niet aan. Aliassen worden voor het geselecteerde bereik naar het gebruikersprofiel geschreven, dus schakel deze voor een zo beperkt mogelijk bereik in. Als u aliassen voor het gehele systeem inschakelt, kan dit problemen veroorzaken voor andere gebruikers die AzureRM hebben geïnstalleerd in hun lokale bereik.
Wanneer de aliasmodus is ingeschakeld, voert u uw scripts opnieuw uit om te bevestigen dat ze nog steeds naar verwachting werken.
Namen van modules en cmdlet's wijzigen
Over het algemeen zijn de modulenamen aangepast, waardoor AzureRM en Azure zijn gewijzigd in Az. Hetzelfde geldt voor cmdlets.
De naam van de module AzureRM.Compute is bijvoorbeeld gewijzigd in Az.Compute. New-AzureRMVM is gewijzigd in New-AzVM en Get-AzureStorageBlob is nu Get-AzStorageBlob.
Er zijn enkele uitzonderingen op deze naamswijzigingen waarvan u op de hoogte moet zijn. Sommige modules hebben een andere naam gekregen of zijn samengevoegd met bestaande modules zonder invloed op het achtervoegsel van de cmdlets, behalve een wijziging van AzureRM of Azure naar Az. Anders is het achtervoegsel van de volledige cmdlet gewijzigd om de naam van de nieuwe module weer te geven.
| AzureRM-module | Az-module | Achtervoegsel van cmdlet gewijzigd? |
|---|---|---|
| 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 |
Samenvatting
Wanneer u deze stappen volgt, kunt u al uw huidige scripts bijwerken zodat ze werken met de nieuwe module. Als u vragen hebt of problemen ondervindt met deze stappen waardoor uw migratie werd bemoeilijkt, kunt u reageren op dit artikel zodat we de instructies kunnen verbeteren.
Wijzigingen die fouten veroorzaken voor Az 1.0.0
Dit document geeft gedetailleerde informatie over de wijzigingen tussen AzureRM 6.x en de nieuwe Az-module, versie 1.x en hoger. De inhoudsopgave helpt u bij het doorlopen van een volledig migratiepad, inclusief module-specifieke wijzigingen die van invloed kunnen zijn op uw scripts.
Algemene belangrijke wijzigingen
In deze sectie wordt nader ingegaan op de algemene belangrijke wijzigingen die deel uitmaken van het herontwerp van de Az-module.
Wijzigingen in het voorvoegsel van cmdlet-voorvoegsels
In de AzureRM-module gebruikten cmdlets AzureRM of Azure als voorvoegsel. Az vereenvoudigt en normaliseert cmdlets-namen, zodat alle cmdlets 'Az' gebruiken als voorvoegsel. Bijvoorbeeld:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Is gewijzigd in:
Get-AzVM
Get-AzKeyVaultSecret
Om de overgang naar deze nieuwe cmdlet-namen eenvoudiger te maken, introduceert Az twee nieuwe cmdlets: Enable-AzureRmAlias en Disable-AzureRmAlias. Enable-AzureRmAlias maakt aliassen voor de oude cmdlets-namen in AzureRM die worden toegewezen aan de nieuwe namen van Az-cmdlets. Met behulp van argument -Scope met Enable-AzureRmAlias kunt u kiezen waar aliassen worden ingeschakeld.
Neem bijvoorbeeld het volgende script in AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Kan met minimale wijzigingen worden uitgevoerd met behulp van Enable-AzureRmAlias:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Als u Enable-AzureRmAlias -Scope CurrentUser uitvoert, worden de aliassen ingeschakeld voor alle PowerShell-sessies die u opent, zodat een dergelijk script na uitvoering van deze cmdlet helemaal niet meer hoeft te worden gewijzigd:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Voor volledige details over het gebruik van de alias-cmdlets, zie de Enable-AzureRmAlias-referentie.
Wanneer u klaar bent om aliassen uit te schakelen, verwijdert Disable-AzureRmAlias de gemaakte aliassen. Voor volledige details, zie de Disable-AzureRmAlias-referentie.
Belangrijk
Wanneer u aliassen uitschakelt, zorg er dan voor dat ze uitgeschakeld zijn voor alle bereiken waarvoor aliassen waren ingeschakeld.
Wijzigingen in de modulenaam
De modulenamen zijn gewijzigd van AzureRM.* in Az.*, behalve voor de volgende modules:
| AzureRM-module | Az-module |
|---|---|
| Azure.Storage | Az.Storage |
| Azure.AnalysisServices | Az.AnalysisServices |
| AzureRM.Profile | Az.Accounts |
| AzureRM.Insights | Az.Monitor |
| AzureRM.RecoveryServices.Backup | Az.RecoveryServices |
| AzureRM.RecoveryServices.SiteRecovery | Az.RecoveryServices |
| AzureRM.Tags | Az.Resources |
| AzureRM.MachineLearningCompute | Az.MachineLearning |
| AzureRM.UsageAggregates | Az.Billing |
| AzureRM.Consumption | Az.Billing |
De wijzigingen in de modulenamen betekenen dat elk script dat #Requires of Import-Module gebruikt om specifieke modules te laden, zodanig moet worden gewijzigd dat de nieuwe modulenaam wordt gebruikt. Voor modules waarbij het cmdlet-achtervoegsel niet is gewijzigd, betekent dit dat de naam van de module weliswaar is gewijzigd, maar het achtervoegsel dat de werkruimte aangeeft, juist niet.
Module-instructies vereist migreren en importeren
Scripts waarin #Requires of Import-Module wordt gebruikt om een afhankelijkheid van AzureRM-modules te declareren, moeten worden bijgewerkt om de nieuwe modulenamen te gebruiken. Bijvoorbeeld:
#Requires -Module AzureRM.Compute
Moet worden gewijzigd in:
#Requires -Module Az.Compute
Voor Import-Module:
Import-Module -Name AzureRM.Compute
Moet worden gewijzigd in:
Import-Module -Name Az.Compute
Volledig gekwalificeerde cmdlet-aanroepen migreren
Scripts die gebruikmaken van volledig gekwalificeerde cmdlet-aanroepen, zoals:
AzureRM.Compute\Get-AzureRmVM
Moeten zodanig worden gewijzigd dat de nieuwe module- en cmdlet-namen worden gebruikt:
Az.Compute\Get-AzVM
Afhankelijkheden van modulemanifesten migreren
In modules waarin afhankelijkheden van AzureRM-modules worden uitgedrukt via een modulemanifestbestand (.psd1), moeten de modulenamen worden bijgewerkt in de sectie RequiredModules:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Moet worden gewijzigd in:
RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})
Verwijderde modules
De volgende modules zijn verwijderd:
AzureRM.BackupAzureRM.Compute.ManagedServiceAzureRM.Scheduler
De hulpprogramma's voor deze services worden niet langer actief ondersteund. Klanten worden aangeraden om alternatieve services te verplaatsen wanneer dit uitkomt.
Windows PowerShell 5.1 en .NET 4.7.2
Als u Az met PowerShell 5.1 voor Windows gebruikt, is de installatie van .NET Framework 4.7.2 vereist. Het gebruik van PowerShell Core 6.x of hoger vereist geen .NET Framework.
Gebruikersmelding met PSCredential tijdelijk verwijderd
Door wijzigingen in de verificatiestroom voor .NET Standard, verwijderen we tijdelijk gebruikersaanmelding met PSCredential. Deze mogelijkheid wordt opnieuw geïntroduceerd in de versie van 15-01-2019 voor PowerShell 5.1 voor Windows. Dit wordt uitgebreid besproken in dit GitHub-probleem.
Standaardaanmelding met apparaatcode in plaats van webbrowserprompt
Vanwege wijzigingen in de verificatiestroom voor .NET Standard, gebruiken we apparaataanmelding als de standaardaanmeldmethode tijdens interactieve aanmeldingen. Aanmelding op basis van de webbrowser wordt opnieuw geïntroduceerd als standaardmethode voor PowerShell 5.1 voor Windows in de versie van 15-01-2019. Gebruikers kunnen dan kiezen voor apparaataanmelding met een Switch-parameter.
Belangrijke modulewijzigingen
In deze sectie worden specifieke belangrijke wijzigingen voor individuele modules en cmdlets beschreven.
Az.ApiManagement (eerder AzureRM.ApiManagement)
- De volgende cmdlets zijn verwijderd:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Gebruik in plaats daarvan de cmdlet Set-AzApiManagement om deze eigenschappen in te stellen
- De volgende eigenschappen zijn verwijderd:
- De eigenschappen
PortalHostnameConfiguration,ProxyHostnameConfiguration,ManagementHostnameConfigurationenScmHostnameConfigurationvan typePsApiManagementHostnameConfigurationvanPsApiManagementContextzijn verwijderd. Gebruik in plaats daarvanPortalCustomHostnameConfiguration,ProxyCustomHostnameConfiguration.ManagementCustomHostnameConfigurationenScmCustomHostnameConfigurationvan typePsApiManagementCustomHostNameConfiguration. - Eigenschap
StaticIPsis verwijderd uit PsApiManagementContext. De eigenschap is gesplitst inPublicIPAddressesenPrivateIPAddresses. - De vereiste eigenschap
Locationis verwijderd uit de cmdlet New-AzureApiManagementVirtualNetwork.
- De eigenschappen
Az.Billing (eerder AzureRM.Billing, AzureRM.Consumption en AzureRM.UsageAggregates)
- De parameter
InvoiceNameis verwijderd uit de cmdletGet-AzConsumptionUsageDetail. Scripts moeten andere identiteitsparameters voor aanroepen gebruiken.
Az.Compute (eerder AzureRM.Compute)
IdentityIdswordt verwijderd uit de eigenschapIdentityin de objectenPSVirtualMachineenPSVirtualMachineScaleSet. Scripts zouden de waarde van dit veld niet langer moeten gebruiken voor verwerkingsbesluiten.- Het type van eigenschap
InstanceViewvan objectPSVirtualMachineScaleSetVMis gewijzigd vanVirtualMachineInstanceViewinVirtualMachineScaleSetVMInstanceView - De eigenschappen
AutoOSUpgradePolicyenAutomaticOSUpgradezijn verwijderd uit de eigenschapUpgradePolicy - Het type van de eigenschap
Skuin objectPSSnapshotUpdateis gewijzigd vanDiskSkuinSnapshotSku VmScaleSetVMParameterSetis verwijderd uit de cmdletAdd-AzVMDataDisk, u kunt een dataschijf niet langer afzonderlijk toevoegen aan een schaalset-VM.
Az.KeyVault (eerder AzureRM.KeyVault)
- De eigenschap
PurgeDisabledis verwijderd uit de objectenPSKeyVaultKeyAttributes,PSKeyVaultKeyIdentityItemenPSKeyVaultSecretAttributes. Scripts moeten niet langer verwijzen naar de eigenschapPurgeDisabledvoor verwerkingsbesluiten.
Az.Monitor (eerder AzureRM.Insights)
De meervoudsnamen
Categoriesen parameterTimegrainszijn verwijderd ten behoeve van enkelvoudige parameternamen uit de cmdletSet-AzDiagnosticSetting. Scripts die gebruikmaken vanSet-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2Moeten worden gewijzigd in
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (eerder AzureRM.Network)
- De afgeschafte parameter
ResourceIdis verwijderd uit de cmdletGet-AzServiceEndpointPolicyDefinition - De afgeschafte eigenschap
EnableVmProtectionis verwijderd uit het objectPSVirtualNetwork - De afgeschafte cmdlet
Set-AzVirtualNetworkGatewayVpnClientConfigis verwijderd
Scripts zouden niet langer verwerkingsbesluiten moeten maken op basis van de waarden in deze velden.
Az.Resources (eerder AzureRM.Resources)
De parameter
Skuis verwijderd uit cmdletNew/Set-AzPolicyAssignmentDe parameter
Passwordis verwijderd uit de cmdletNew-AzADServicePrincipalenNew-AzADSpCredential. Wachtwoorden worden automatisch gegeneerd, scripts die het wachtwoord opgeven:New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476 -Password $secPasswordMoet worden gewijzigd om het wachtwoord uit de uitvoer op te halen:
$credential = New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476 $secPassword = $credential.Secret
Az.Storage (eerder Azure.Storage en AzureRM.Storage)
- Ter ondersteuning van het maken van een Oauth-opslagcontext met alleen de naam van het opslagaccount, is de standaardparameterset gewijzigd in
OAuthParameterSet- Voorbeeld:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Voorbeeld:
- De parameter
Locationis verplicht geworden in de cmdletGet-AzStorageUsage - De opslag-API-methoden gebruiken het Task-based Asynchronous Pattern (TAP), in plaats van synchrone API-aanroepen. De volgende voorbeelden tonen de nieuwe asynchrone opdrachten:
Blob-momentopname
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
Momentopname delen
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
Voorlopige verwijdering van blob ongedaan maken
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()
Blob-laag instellen
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 (eerder AzureRM.Websites)
- De afgeschafte eigenschappen zijn verwijderd uit de objecten
PSAppServicePlan,PSCertificate,PSCloningInfoenPSSite
Volgende stappen
- Zie Aan de slag met PowerShell in Azure Stack Hub voor meer informatie over PowerShell Azure Stack Hub
- Installeer de Az-module van PowerShell. Zie De Az-module van PowerShell installeren voor Azure Stack Hub