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 de huidige scripts werken met AzureRM

Dit is de belangrijkste stap! Voer uw bestaande scripts uit en zorg ervoor dat deze 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:

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 cmdlets 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 Ja
AzureRM.Insights Az.Monitor Ja
AzureRM.Tags Az.Resources Nee
AzureRM.UsageAggregates Az.Billing Nee
AzureRM.Consumption Az.Billing Nee

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

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.

Migreren van module-instructies voor vereist 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.Backup
  • AzureRM.Compute.ManagedService
  • AzureRM.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.

Tijdelijke verwijdering van gebruikersaanmelding met BEHULP van PSCredential

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, ManagementHostnameConfiguration en ScmHostnameConfiguration van type PsApiManagementHostnameConfiguration van PsApiManagementContext zijn verwijderd. Gebruik in plaats daarvan PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration. ManagementCustomHostnameConfiguration en ScmCustomHostnameConfiguration van type PsApiManagementCustomHostNameConfiguration.
    • Eigenschap StaticIPs is verwijderd uit PsApiManagementContext. De eigenschap is gesplitst in PublicIPAddresses en PrivateIPAddresses.
    • De vereiste eigenschap Location is verwijderd uit de cmdlet New-AzureApiManagementVirtualNetwork.

Az.Billing (eerder AzureRM.Billing, AzureRM.Consumption en AzureRM.UsageAggregates)

  • De parameter InvoiceName is verwijderd uit de cmdlet Get-AzConsumptionUsageDetail. Scripts moeten andere identiteitsparameters voor aanroepen gebruiken.

Az.Compute (eerder AzureRM.Compute)

  • IdentityIds wordt verwijderd uit de eigenschap Identity in de objecten PSVirtualMachine en PSVirtualMachineScaleSet. Scripts zouden de waarde van dit veld niet langer moeten gebruiken voor verwerkingsbesluiten.
  • Het type van eigenschap InstanceView van object PSVirtualMachineScaleSetVM is gewijzigd van VirtualMachineInstanceView in VirtualMachineScaleSetVMInstanceView
  • De eigenschappen AutoOSUpgradePolicy en AutomaticOSUpgrade zijn verwijderd uit de eigenschap UpgradePolicy
  • Het type van de eigenschap Sku in object PSSnapshotUpdate is gewijzigd van DiskSku in SnapshotSku
  • VmScaleSetVMParameterSet is verwijderd uit de cmdlet Add-AzVMDataDisk, u kunt een dataschijf niet langer afzonderlijk toevoegen aan een schaalset-VM.

Az.KeyVault (eerder AzureRM.KeyVault)

  • De eigenschap PurgeDisabled is verwijderd uit de objecten PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItem en PSKeyVaultSecretAttributes. Scripts moeten niet langer verwijzen naar de eigenschap PurgeDisabled voor verwerkingsbesluiten.

Az.Monitor (eerder AzureRM.Insights)

  • De meervoudsnamen Categories en parameter Timegrains zijn verwijderd ten behoeve van enkelvoudige parameternamen uit de cmdlet Set-AzDiagnosticSetting. Scripts die gebruikmaken van

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Moeten worden gewijzigd in

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (eerder AzureRM.Network)

  • De afgeschafte parameter ResourceId is verwijderd uit de cmdlet Get-AzServiceEndpointPolicyDefinition
  • De afgeschafte eigenschap EnableVmProtection is verwijderd uit het object PSVirtualNetwork
  • De afgeschafte cmdlet Set-AzVirtualNetworkGatewayVpnClientConfig is verwijderd

Scripts zouden niet langer verwerkingsbesluiten moeten maken op basis van de waarden in deze velden.

Az.Resources (eerder AzureRM.Resources)

  • De parameter Sku is verwijderd uit cmdlet New/Set-AzPolicyAssignment

  • De parameter Password is verwijderd uit de cmdlet New-AzADServicePrincipal en New-AzADSpCredential. Wachtwoorden worden automatisch gegeneerd, scripts die het wachtwoord opgeven:

    New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476 -Password $secPassword
    

    Moet 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
  • De parameter Location is verplicht geworden in de cmdlet Get-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()

Bloblaag 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, PSCloningInfo en PSSite

Volgende stappen