Delen via


Migreren van AzureRM naar Azure PowerShell Az in Azure Stack Hub

De Az-module heeft functiepariteit met AzureRM, maar maakt gebruik van kortere en consistentere cmdlet-namen. Scripts die zijn geschreven voor de AzureRM-cmdlets, werken niet automatisch met de nieuwe module. Om de overgang eenvoudiger te maken, biedt Az hulpprogramma's waarmee u uw bestaande scripts kunt uitvoeren met behulp van AzureRM. Geen migratie naar een nieuwe opdrachtenset is ooit gemakkelijk, maar dit artikel helpt u bij de overgang naar de nieuwe module.

Zie de Migratiehandleiding voor Az 1.0.0 voor een volledige lijst met belangrijke wijzigingen tussen AzureRM en Az

Controleren op geïnstalleerde versies van AzureRM

Voordat u migratiestappen uitvoert, controleert u welke versies van AzureRM op uw systeem zijn geïnstalleerd. Hierdoor kunt u ervoor zorgen dat scripts al worden uitgevoerd in de nieuwste versie en u laten weten of u opdrachtaliassen kunt inschakelen zonder AzureRM te verwijderen.

Voer de opdracht uit om te controleren 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 release van AzureRM (2.5.0). Als uw scripts niet werken, lees dan de AzureRM-migratiehandleiding.

De Az-module van Azure PowerShell installeren

De eerste stap is het installeren van de Az-module op uw platform. Wanneer u Az installeert, wordt u aangeraden AzureRM te verwijderen. In de volgende stappen leert u hoe u uw bestaande scripts kunt blijven uitvoeren en compatibiliteit kunt inschakelen voor oude cmdlet-namen.

Voer de volgende stappen uit om de Az-module van Azure PowerShell te installeren:

AzureRM-compatibiliteitsaliassen inschakelen

Belangrijk

Schakel de compatibiliteitsmodus alleen in als u alle versies van AzureRM hebt verwijderd. Het inschakelen van de compatibiliteitsmodus met AzureRM-cmdlets die nog steeds beschikbaar zijn, kan onvoorspelbaar gedrag tot gevolg hebben. Sla deze stap over als u besluit Om AzureRM geïnstalleerd te houden, maar houd er rekening mee dat alle AzureRM-cmdlets gebruikmaken van de oudere modules en geen Az-cmdlets aanroepen.

Als AzureRM is verwijderd en uw scripts werken met de nieuwste Versie van AzureRM, is de volgende stap het inschakelen van de compatibiliteitsmodus voor de Az-module. Compatibiliteit is ingeschakeld met de opdracht:

Enable-AzureRmAlias -Scope CurrentUser

Met aliassen kunt u oude cmdlet-namen gebruiken waarop de Az-module is geïnstalleerd. Deze aliassen worden geschreven naar het gebruikersprofiel voor het geselecteerde toepassingsgebied. Als er geen gebruikersprofiel bestaat, wordt er een gemaakt.

Waarschuwing

U kunt voor deze opdracht een andere -Scope gebruiken, maar dit wordt niet aanbevolen. Aliassen worden geschreven naar het gebruikersprofiel voor het geselecteerde bereik, dus zorg ervoor dat ze zo beperkt mogelijk een bereik hebben. Het inschakelen van aliassen voor het hele systeem kan ook problemen veroorzaken voor andere gebruikers waarop AzureRM is geïnstalleerd in hun lokale bereik.

Zodra de aliasmodus is ingeschakeld, voert u de scripts opnieuw uit om te bevestigen dat ze nog steeds werken zoals verwacht.

Module- en cmdlet-namen wijzigen

Over het algemeen zijn de modulenamen gewijzigd, zodat AzureRM en AzureAzworden, en hetzelfde voor cmdlets. De naam van de AzureRM.Compute-module is bijvoorbeeld gewijzigd in Az.Compute. New-AzureRMVM is New-AzVMgeworden en Get-AzureStorageBlob is nu Get-AzStorageBlob.

Er zijn uitzonderingen op deze naamgevingswijziging waarvan u rekening moet houden. Sommige modules zijn hernoemd of samengevoegd in bestaande modules zonder dat dit van invloed is op het achtervoegsel van hun cmdlets, behalve het wijzigen van AzureRM of Azure in Az. Anders is het volledige cmdlet-achtervoegsel gewijzigd om de naam van de nieuwe module weer te geven.

AzureRM-module Az-module Cmdlet-achtervoegsel 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

Door deze stappen te volgen, kunt u al uw bestaande scripts bijwerken om de nieuwe module te gebruiken. Als u vragen of problemen hebt met deze stappen waardoor uw migratie moeilijk is, kunt u commentaar geven op dit artikel, zodat we de instructies kunnen verbeteren.

Belangrijke wijzigingen voor Az 1.0.0

Dit document bevat 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 modulespecifieke wijzigingen die van invloed kunnen zijn op uw scripts.

Algemene ingrijpende veranderingen

In deze sectie worden de algemene belangrijke wijzigingen beschreven die deel uitmaken van het herontwerp van de Az-module.

Wijzigingen in naamwoordvoorvoegsel voor cmdlets

In de AzureRM-module gebruikten cmdlets AzureRM of Azure als een voorvoegsel voor het zelfstandig naamwoord. Az vereenvoudigt en normaliseert cmdlet-namen, zodat alle cmdlets 'Az' gebruiken als hun voorvoegsel voor het zelfstandig naamwoord. 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 oudere cmdlet-namen in AzureRM die corresponderen met de nieuwere Az-cmdletnamen. Met behulp van het argument -Scope met Enable-AzureRmAlias kunt u kiezen waar aliassen zijn ingeschakeld.

Bijvoorbeeld het volgende script in AzureRM:

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

Kan worden uitgevoerd met minimale wijzigingen 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 na het uitvoeren van deze cmdlet een script zoals dit helemaal niet hoeft te worden gewijzigd:

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Voor volledige details over het gebruik van de alias-cmdlets, zie de Enable-AzureRmAlias verwijzing.

Wanneer u klaar bent om aliassen uit te schakelen, verwijdert Disable-AzureRmAlias de gemaakte aliassen. Zie de Disable-AzureRmAlias-verwijzingvoor meer informatie.

Belangrijk

Wanneer u aliassen uitschakelt, moet u ervoor zorgen dat ze zijn uitgeschakeld voor alle domeinen waarop aliassen eerder waren ingeschakeld.

Wijzigingen in modulenaam

De modulenamen zijn gewijzigd van AzureRM.* in Az.*, met uitzondering van 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 modulenamen betekenen dat elk script dat gebruikmaakt van #Requires of Import-Module om specifieke modules te laden, moet worden gewijzigd om in plaats daarvan de nieuwe module te kunnen gebruiken. Voor modules waarin het cmdlet-achtervoegsel niet is gewijzigd, betekent dit dat hoewel de modulenaam is gewijzigd, het achtervoegsel dat aangeeft dat de bewerkingsruimte nietheeft.

Voor migratie zijn moduleverklaringen vereist en moeten deze worden geïmporteerd

Scripts die gebruikmaken van #Requires of Import-Module om een afhankelijkheid van AzureRM-modules te declareren, moeten worden bijgewerkt om de nieuwe modulenamen te kunnen 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 door module gekwalificeerde cmdlet-aanroepen, zoals:

AzureRM.Compute\Get-AzureRmVM

Moet worden gewijzigd om de nieuwe module- en cmdlet-namen te kunnen gebruiken:

Az.Compute\Get-AzVM

Afhankelijkheden van modulemanifest migreren

Modules die afhankelijkheden van AzureRM-modules uitdrukken via een modulemanifestbestand (.psd1), moeten de modulenamen in hun RequiredModules sectie bijwerken:

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 meer actief ondersteund. Klanten worden aangemoedigd om over te stappen op alternatieve services zodra het handig is.

Windows PowerShell 5.1 en .NET 4.7.2

Voor het gebruik van Az met PowerShell 5.1 voor Windows is de installatie van .NET Framework 4.7.2 vereist. Voor het gebruik van PowerShell Core 6.x of hoger is geen .NET Framework vereist.

Tijdelijke verwijdering van gebruikersaanmelding met PSCredential

Vanwege wijzigingen in de verificatiestroom voor .NET Standard verwijderen we tijdelijk gebruikersaanmelding via PSCredential. Deze mogelijkheid wordt opnieuw geïntroduceerd in de release van 15-15-2019 voor PowerShell 5.1 voor Windows. Dit wordt uitgebreid besproken in dit GitHub-probleem.

Standaardaanmelding met apparaatcode in plaats van een browsermelding

Vanwege wijzigingen in de verificatiestroom voor .NET Standard gebruiken we apparaataanmelding als de standaardaanmeldingsstroom tijdens interactieve aanmelding. Webbrowser-gebaseerd inloggen zal opnieuw worden geïntroduceerd als de standaard voor PowerShell 5.1 voor Windows in de release van 15 januari 2019. Op dat moment kunnen gebruikers apparaataanmelding kiezen met behulp van een switchparameter.

Wijzigingen die fouten veroorzaken in de module

In deze sectie worden specifieke ingrijpende wijzigingen voor afzonderlijke modules en cmdlets beschreven.

Az.ApiManagement (eerder AzureRM.ApiManagement)

  • De volgende cmdlets zijn verwijderd:
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • Gebruik cmdlet Set-AzApiManagement om deze eigenschappen in te stellen
  • De volgende eigenschappen zijn verwijderd:
    • Eigenschappen PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration en ScmHostnameConfiguration van het type PsApiManagementHostnameConfiguration zijn verwijderd uit PsApiManagementContext. Gebruik in plaats daarvan PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration en ScmCustomHostnameConfiguration van het type PsApiManagementCustomHostNameConfiguration.
    • Eigenschap StaticIPs verwijderd uit PsApiManagementContext. De eigenschap is opgesplitst in PublicIPAddresses en PrivateIPAddresses.
    • Vereiste eigenschap Location verwijderd uit New-AzureApiManagementVirtualNetwork cmdlet.

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 de factuur gebruiken.

Az.Compute (eerder AzureRM.Compute)

  • IdentityIds worden verwijderd uit Identity eigenschap in PSVirtualMachine en PSVirtualMachineScaleSet objecten scripts mogen de waarde van dit veld niet langer gebruiken om verwerkingsbeslissingen te nemen.
  • Het type eigenschap van InstanceView van PSVirtualMachineScaleSetVM object wordt gewijzigd van VirtualMachineInstanceView in VirtualMachineScaleSetVMInstanceView
  • AutoOSUpgradePolicy- en AutomaticOSUpgrade-eigenschappen worden verwijderd uit UpgradePolicy eigenschap
  • Het type eigenschap Sku in PSSnapshotUpdate object wordt gewijzigd van DiskSku in SnapshotSku
  • VmScaleSetVMParameterSet wordt verwijderd uit Add-AzVMDataDisk cmdlet, kunt u een gegevensschijf niet meer afzonderlijk toevoegen aan een ScaleSet-VM.

Az.KeyVault (eerder AzureRM.KeyVault)

  • De eigenschap PurgeDisabled is verwijderd uit de PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItemen PSKeyVaultSecretAttributes objecten scripts mogen niet langer verwijzen naar de eigenschap PurgeDisabled om verwerkingsbeslissingen te nemen.

Az.Monitor (eerder AzureRM.Insights)

  • Meervoudsnamen Categories en Timegrains parameter verwijderd ten gunste van enkelvoudige parameternamen uit Set-AzDiagnosticSetting cmdlet Scripts met behulp van

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Moet worden gewijzigd in

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (eerder AzureRM.Network)

  • Verouderde ResourceId parameter verwijderd uit Get-AzServiceEndpointPolicyDefinition cmdlet
  • Afgeschafte EnableVmProtection eigenschap verwijderd uit PSVirtualNetwork-object
  • Verouderde Set-AzVirtualNetworkGatewayVpnClientConfig cmdlet verwijderd

Scripts mogen geen verwerkingsbeslissingen meer nemen op basis van de waarden voor deze velden.

Az.Resources (eerder AzureRM.Resources)

  • Parameter Sku verwijderd uit New/Set-AzPolicyAssignment cmdlet

  • De parameter Password verwijderd uit de cmdlets New-AzADServicePrincipal en New-AzADSpCredential. Wachtwoorden worden automatisch gegenereerd, scripts die het wachtwoord hebben opgegeven:

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

    Moet worden gewijzigd om het wachtwoord op te halen uit de uitvoer:

    $credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    $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 storage-API-methoden gebruiken nu het op taken gebaseerde Asynchrone patroon (TAP) in plaats van synchrone API-aanroepen. In de volgende voorbeelden ziet u 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

Voorlopig verwijderde 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)

  • Afgeschafte eigenschappen verwijderd uit de objecten PSAppServicePlan, PSCertificate, PSCloningInfoen PSSite

Volgende stappen