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:
- consigliato : Disinstallare il modulo AzureRM. Assicurarsi di rimuovere tutte le versioni installate di AzureRM, non solo la versione più recente.
- Installare il modulo Az
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 Az
e lo stesso per i cmdlet.
Ad esempio, il modulo AzureRM.Compute
è stato rinominato in Az.Compute
.
New-AzureRMVM
è diventato New-AzVM
e 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 | Sì |
AzureRM.Insights | Az.Monitor | Sì |
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
eScmHostnameConfiguration
di tipoPsApiManagementHostnameConfiguration
daPsApiManagementContext
. Usare invecePortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
eScmCustomHostnameConfiguration
di tipoPsApiManagementCustomHostNameConfiguration
. - Rimozione della proprietà
StaticIPs
da PsApiManagementContext. La proprietà è stata suddivisa inPublicIPAddresses
ePrivateIPAddresses
. - Rimozione della proprietà obbligatoria
Location
dal cmdlet di New-AzureApiManagementVirtualNetwork.
- Rimozione della proprietà
Az.Billing (in precedenza AzureRM.Billing, AzureRM.Consumption e AzureRM.UsageAggregates)
- Il parametro
InvoiceName
è stato rimosso dal cmdletGet-AzConsumptionUsageDetail
. Gli script dovranno usare altri parametri identity per la fattura.
Az.Compute (in precedenza AzureRM.Compute)
-
IdentityIds
vengono rimossi dalla proprietàIdentity
inPSVirtualMachine
e gli oggettiPSVirtualMachineScaleSet
Script non devono più utilizzare il valore di questo campo per prendere decisioni di elaborazione. - Il tipo di proprietà di
InstanceView
dell'oggettoPSVirtualMachineScaleSetVM
viene modificato daVirtualMachineInstanceView
aVirtualMachineScaleSetVMInstanceView
- Le proprietà
AutoOSUpgradePolicy
eAutomaticOSUpgrade
vengono rimosse dalla proprietàUpgradePolicy
- Il tipo di proprietà di
Sku
nell'oggettoPSSnapshotUpdate
viene modificato daDiskSku
aSnapshotSku
-
VmScaleSetVMParameterSet
viene rimosso dal cmdletAdd-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 oggettiPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
ePSKeyVaultSecretAttributes
. 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
eTimegrains
a favore dei nomi di parametri singolari nei script di cmdletSet-AzDiagnosticSetting
usandoSet-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 cmdletGet-AzServiceEndpointPolicyDefinition
- Rimozione della proprietà
EnableVmProtection
deprecata dall'oggettoPSVirtualNetwork
- 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 cmdletNew/Set-AzPolicyAssignment
I parametri
Password
rimossi daNew-AzADServicePrincipal
eNew-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
- Esempio:
- Il parametro
Location
è diventato obbligatorio nel cmdletGet-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
,PSCloningInfo
ePSSite
Passaggi successivi
- Altre informazioni su PowerShell nell'hub di Azure Stack, vedere Introduzione a PowerShell nell'hub di Azure Stack
- Installare il modulo Az di PowerShell, vedere Installare il modulo Az di PowerShell per l'hub di Azure Stack