Condividi tramite


Eseguire la migrazione da AzureRM ad Azure PowerShell Az nell'hub di Azure Stack

Il modulo Az ha parità di funzionalità con AzureRM, ma usa nomi di cmdlet più brevi e più coerenti. Gli script scritti per i cmdlet di AzureRM non funzioneranno automaticamente con il nuovo modulo. Per semplificare la transizione, Az offre strumenti che consentono di eseguire gli script esistenti usando AzureRM. Non è mai utile eseguire la migrazione a un nuovo set di comandi, ma questo articolo consente di iniziare a eseguire la transizione al nuovo modulo.

Per visualizzare l'elenco completo delle modifiche di rilievo tra AzureRM e Az, vedere la guida alla migrazione di per Az 1.0.0

Verificare la presenza di versioni installate di AzureRM

Prima di eseguire qualsiasi procedura di migrazione, verificare quali versioni di AzureRM sono installate nel sistema. In questo modo è possibile assicurarsi che gli script siano già in esecuzione nella versione più recente e segnalare se è possibile abilitare gli alias di comando senza disinstallare AzureRM.

Per verificare le versioni di AzureRM installate, eseguire il comando :

Get-InstalledModule -Name AzureRM -AllVersions

Verificare che gli script correnti funzionino con AzureRM

Questo è il passaggio più importante! Eseguire gli script esistenti e assicurarsi che funzionino con la versione più recente di AzureRM (2.5.0). Se gli script non funzionano, assicurarsi di leggere la guida alla migrazione AzureRM.

Installare il modulo Az di Azure PowerShell

Il primo passaggio consiste nell'installare il modulo Az nella piattaforma. Quando si installa Az, è consigliabile disinstallare AzureRM. Nei passaggi seguenti si apprenderà come continuare a eseguire gli script esistenti e abilitare la compatibilità per i nomi dei cmdlet precedenti.

Per installare il modulo Az di Azure PowerShell, seguire questa procedura:

Abilitare gli alias di compatibilità di AzureRM

Importante

Abilitare la modalità di compatibilità solo se è stata disinstallata tutte le versioni di AzureRM. L'abilitazione della modalità di compatibilità con i cmdlet di AzureRM ancora disponibili può comportare un comportamento imprevedibile. Ignorare questo passaggio se si è deciso di mantenere installato AzureRM, ma tenere presente che tutti i cmdlet di AzureRM useranno i moduli meno recenti e non chiameranno alcun cmdlet Az.

Con AzureRM disinstallato e gli script che utilizzano la versione più recente di AzureRM, il passaggio successivo consiste nell'abilitare la modalità di compatibilità per il modulo Az. La compatibilità è abilitata con il comando :

Enable-AzureRmAlias -Scope CurrentUser

Gli alias consentono di usare i nomi dei cmdlet precedenti con il modulo Az installato. Questi alias vengono scritti nel profilo utente per l'ambito selezionato. Se non esiste alcun profilo utente, ne viene creato uno.

Avvertimento

È possibile usare un -Scope diverso per questo comando, ma non è consigliabile. Gli alias vengono scritti nel profilo utente per l'ambito selezionato, quindi continuare ad abilitarli nel modo più limitato possibile. L'abilitazione degli alias a livello di sistema può anche causare problemi per altri utenti in cui AzureRM è installato nell'ambito locale.

Dopo aver abilitato la modalità alias, eseguire di nuovo gli script per verificare che funzionino ancora come previsto.

Modificare i nomi dei moduli e dei cmdlet

In generale, i nomi dei moduli sono stati modificati in modo che AzureRM e Azure diventano Aze lo stesso per i cmdlet. Ad esempio, il modulo AzureRM.Compute è stato rinominato in Az.Compute. New-AzureRMVM è diventato New-AzVMe Get-AzureStorageBlob è ora Get-AzStorageBlob.

Esistono eccezioni a questa modifica di denominazione di cui tenere conto. Alcuni moduli sono stati rinominati o uniti in moduli esistenti senza che ciò influisca sul suffisso dei relativi cmdlet, oltre a modificare AzureRM o Azure in Az. In caso contrario, il suffisso completo del cmdlet è stato modificato in modo da riflettere il nuovo nome del modulo.

Modulo AzureRM Modulo Az Il suffisso del cmdlet è stato modificato?
AzureRM.Profile Az.Accounts
AzureRM.Insights Az.Monitor
AzureRM.Tags Az.Resources No
AzureRM.UsageAggregates Az.Billing No
AzureRM.Consumption Az.Billing No.

Sommario

Seguendo questa procedura, è possibile aggiornare tutti gli script esistenti per usare il nuovo modulo. In caso di domande o problemi con questi passaggi che hanno reso difficile la migrazione, commentare questo articolo in modo da poter migliorare le istruzioni.

Modifiche di rilievo per Az 1.0.0

Questo documento fornisce informazioni dettagliate sulle modifiche tra AzureRM 6.x e il nuovo modulo Az, versione 1.x e successive. Il sommario consentirà di eseguire un percorso di migrazione completo, incluse le modifiche specifiche del modulo che possono influire sugli script.

Modifiche sostanziali generali

Questa sezione descrive in dettaglio le modifiche sostanziali che fanno parte della riprogettazione del modulo Az.

Modifiche al prefisso dei nomi dei cmdlet

Nel modulo AzureRM, i cmdlet usavano AzureRM o Azure come prefisso del sostantivo. Az semplifica e normalizza i nomi dei cmdlet, in modo che tutti i cmdlet usino 'Az' come prefisso sostantivo del cmdlet. Per esempio:

Get-AzureRMVM
Get-AzureKeyVaultSecret

È stato modificato in:

Get-AzVM
Get-AzKeyVaultSecret

Per semplificare la transizione a questi nuovi nomi di cmdlet, Az introduce due nuovi cmdlet, Enable-AzureRmAlias e Disable-AzureRmAlias. Enable-AzureRmAlias crea alias per i nomi dei cmdlet meno recenti in AzureRM che corrispondono ai nomi dei cmdlet Az più recenti. L'uso dell'argomento -Scope con Enable-AzureRmAlias consente di scegliere dove sono abilitati gli alias.

Ad esempio, lo script seguente in AzureRM:

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

Può essere eseguito con modifiche minime usando Enable-AzureRmAlias:

#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

L'esecuzione di Enable-AzureRmAlias -Scope CurrentUser abiliterà gli alias per tutte le sessioni di PowerShell aperte, in modo che, dopo l'esecuzione di questo cmdlet, non sia necessario modificare uno script simile al seguente:

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Per informazioni dettagliate sull'utilizzo dei cmdlet alias, vedere il riferimento Enable-AzureRmAlias.

Quando si è pronti per disabilitare gli alias, Disable-AzureRmAlias rimuove gli alias creati. Per informazioni dettagliate, vedere il riferimento Disable-AzureRmAlias.

Importante

Quando si disabilitano gli alias, assicurarsi che siano disabilitati per tutti gli ambiti in cui gli alias erano abilitati.

Modifiche al nome del modulo

I nomi dei moduli sono stati modificati da AzureRM.* a Az.*, ad eccezione dei moduli seguenti:

Modulo AzureRM Modulo Az
Azure.Storage Az.Storage
Azure.AnalysisServices (servizio di analisi) 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

Le modifiche apportate ai nomi dei moduli indicano che qualsiasi script che usa #Requires o Import-Module per caricare moduli specifici dovrà essere modificato per usare invece il nuovo modulo. Per i moduli in cui il suffisso del cmdlet non è stato modificato, ciò significa che, anche se il nome del modulo è stato modificato, il suffisso che indica che lo spazio dell'operazione è non.

La migrazione richiede e importa le istruzioni del modulo

Gli script che usano #Requires o Import-Module per dichiarare una dipendenza dai moduli AzureRM devono essere aggiornati per usare i nuovi nomi di modulo. Per esempio:

#Requires -Module AzureRM.Compute

Deve essere modificato in:

#Requires -Module Az.Compute

Per Import-Module:

Import-Module -Name AzureRM.Compute

Deve essere modificato in:

Import-Module -Name Az.Compute

Migrazione di invocazioni completamente qualificate di cmdlet

Script che usano chiamate di cmdlet qualificate dal modulo, ad esempio:

AzureRM.Compute\Get-AzureRmVM

Dev'essere cambiato per utilizzare il nuovo modulo e i nuovi nomi dei cmdlet.

Az.Compute\Get-AzVM

Migrazione delle dipendenze del modulo manifesto

I moduli che esprimono le dipendenze dai moduli AzureRM tramite un file manifesto del modulo (con estensione psd1) dovranno aggiornare i nomi dei moduli nella relativa sezione RequiredModules:

RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})

Deve essere modificato in:

RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})

Moduli rimossi

Sono stati rimossi i moduli seguenti:

  • AzureRM.Backup
  • AzureRM.Compute.ManagedService
  • AzureRM.Scheduler

Gli strumenti per questi servizi non sono più supportati attivamente. I clienti sono invitati a passare a servizi alternativi non appena è conveniente.

Windows PowerShell 5.1 e .NET 4.7.2

L'uso di Az con PowerShell 5.1 per Windows richiede l'installazione di .NET Framework 4.7.2. L'uso di PowerShell Core 6.x o versione successiva non richiede .NET Framework.

Rimozione temporanea dell'accesso dell'utente utilizzando PSCredential

A causa delle modifiche apportate al flusso di autenticazione per .NET Standard, l'accesso utente viene temporaneamente rimosso tramite PSCredential. Questa funzionalità verrà introdotta nuovamente nella versione 1/15/2019 per PowerShell 5.1 per Windows. Questo argomento viene descritto in dettaglio in questo problema di GitHub.

Accesso al codice predefinito del dispositivo invece della richiesta del web browser

A causa delle modifiche apportate al flusso di autenticazione per .NET Standard, viene utilizzato il login del dispositivo come metodo di accesso predefinito nell'accesso interattivo. L'accesso basato sul Web browser verrà introdotto nuovamente per PowerShell 5.1 per Windows come impostazione predefinita nella versione 1/15/2019. In quel momento, gli utenti potranno scegliere l'accesso del dispositivo usando un parametro Switch.

Modifiche che causano un'interruzione del modulo

In questa sezione vengono fornite informazioni dettagliate sulle modifiche di rilievo specifiche per singoli moduli e cmdlet.

Az.ApiManagement (in precedenza AzureRM.ApiManagement)

  • Sono stati rimossi i cmdlet seguenti:
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • Utilizzare il cmdlet Set-AzApiManagement per impostare queste proprietà invece.
  • Rimosse le proprietà seguenti:
    • Rimozione della proprietà PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration e ScmHostnameConfiguration di tipo PsApiManagementHostnameConfiguration da PsApiManagementContext. Usare invece PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration e ScmCustomHostnameConfiguration di tipo PsApiManagementCustomHostNameConfiguration.
    • Rimozione della proprietà StaticIPs da PsApiManagementContext. La proprietà è stata suddivisa in PublicIPAddresses e PrivateIPAddresses.
    • Rimozione della proprietà obbligatoria Location dal cmdlet di New-AzureApiManagementVirtualNetwork.

Az.Billing (in precedenza AzureRM.Billing, AzureRM.Consumption e AzureRM.UsageAggregates)

  • Il parametro InvoiceName è stato rimosso dal cmdlet Get-AzConsumptionUsageDetail. Gli script dovranno usare altri parametri identity per la fattura.

Az.Compute (in precedenza AzureRM.Compute)

  • IdentityIds vengono rimossi dalla proprietà Identity in PSVirtualMachine e gli oggetti PSVirtualMachineScaleSet Script non devono più utilizzare il valore di questo campo per prendere decisioni di elaborazione.
  • Il tipo di proprietà di InstanceView dell'oggetto PSVirtualMachineScaleSetVM viene modificato da VirtualMachineInstanceView a VirtualMachineScaleSetVMInstanceView
  • Le proprietà AutoOSUpgradePolicy e AutomaticOSUpgrade vengono rimosse dalla proprietà UpgradePolicy
  • Il tipo di proprietà di Sku nell'oggetto PSSnapshotUpdate viene modificato da DiskSku a SnapshotSku
  • VmScaleSetVMParameterSet viene rimosso dal cmdlet Add-AzVMDataDisk, non è più possibile aggiungere un disco dati singolarmente a una macchina virtuale ScaleSet.

Az.KeyVault (in precedenza AzureRM.KeyVault)

  • La proprietà PurgeDisabled è stata rimossa dagli oggetti PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityIteme PSKeyVaultSecretAttributes. Gli script non dovrebbero più fare riferimento alla proprietà PurgeDisabled per prendere decisioni di elaborazione.

Az.Monitor (in precedenza AzureRM.Insights)

  • Rimossi i nomi di parametri plurali Categories e Timegrains a favore dei nomi di parametri singolari nei script di cmdlet Set-AzDiagnosticSetting usando

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Deve essere modificato in

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (in precedenza AzureRM.Network)

  • Rimozione del parametro ResourceId deprecato dal cmdlet Get-AzServiceEndpointPolicyDefinition
  • Rimozione della proprietà EnableVmProtection deprecata dall'oggetto PSVirtualNetwork
  • Rimosso il cmdlet Set-AzVirtualNetworkGatewayVpnClientConfig deprecato

Gli script non devono più prendere decisioni di elaborazione in base ai valori di questi campi.

Az.Resources (in precedenza AzureRM.Resources)

  • Rimozione del parametro Sku dal cmdlet New/Set-AzPolicyAssignment

  • I parametri Password rimossi da New-AzADServicePrincipal e New-AzADSpCredential cmdlet Password vengono generati automaticamente, gli script che hanno fornito la password:

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

    Deve essere modificato per recuperare la password dall'output:

    $credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    $secPassword = $credential.Secret
    

Az.Storage (in precedenza Azure.Storage e AzureRM.Storage)

  • Per supportare la creazione di un contesto di archiviazione Oauth con solo il nome dell'account di archiviazione, il set di parametri predefinito è stato modificato in OAuthParameterSet
    • Esempio: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • Il parametro Location è diventato obbligatorio nel cmdlet Get-AzStorageUsage
  • I metodi dell'API di archiviazione ora usano il modello asincrono basato su attività anziché le chiamate API sincrone. Gli esempi seguenti illustrano i nuovi comandi asincroni:

Snapshot del 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

Condividi istantanea

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

Ripristinare un blob bloccato temporaneamente

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()

Impostare il livello del BLOB

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 (in precedenza AzureRM.Websites)

  • Rimozione delle proprietà deprecate dagli oggetti PSAppServicePlan, PSCertificate, PSCloningInfoe PSSite

Passaggi successivi