Eseguire automaticamente la migrazione degli script di PowerShell dal modulo AzureRM al modulo Az PowerShell
In questo articolo verrà illustrato come usare il modulo Az.Tools.Migration di PowerShell per aggiornare automaticamente gli script di PowerShell e i moduli di script dal modulo AzureRM al modulo Az PowerShell. Per altre opzioni sulla migrazione, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Avviso
Il modulo AzureRM PowerShell è stato ufficialmente deprecato a partire dal 29 febbraio 2024. È consigliabile eseguire la migrazione da AzureRM al modulo Az PowerShell per garantire il supporto e gli aggiornamenti continui.
Anche se il modulo AzureRM può ancora funzionare, non è più gestito o supportato, posizionando qualsiasi uso continuo a discrezione e rischio dell'utente. Per indicazioni sulla transizione al modulo Az, vedere le risorse di migrazione.
Requisiti
Aggiornare gli script di PowerShell alla versione più recente del modulo AzureRM di PowerShell (6.13.1).
Installare il modulo Az.Tools.Migration di PowerShell.
Install-Module -Name Az.Tools.Migration
Passaggio 1: Generare un piano di aggiornamento
Usare il cmdlet New-AzUpgradeModulePlan
per generare un piano di aggiornamento per la migrazione di script e moduli al modulo Az di PowerShell. Questo cmdlet non consente di apportare modifiche agli script esistenti. Usare il parametro FilePath
per scegliere uno script specifico come destinazione oppure il parametro DirectoryPath
per scegliere tutti gli script di una specifica cartella.
Nota
Il cmdlet New-AzUpgradeModulePlan
non esegue il piano, ma genera solo i passaggi di aggiornamento.
L'esempio seguente genera un piano per tutti gli script della cartella C:\Scripts
. Viene specificato il parametro OutVariable
in modo che i risultati vengano restituiti e archiviati simultaneamente in una variabile denominata Plan
.
# Generate an upgrade plan for all the scripts and module files in the specified folder and save it to a variable.
New-AzUpgradeModulePlan -FromAzureRmVersion 6.13.1 -ToAzVersion latest -DirectoryPath 'C:\Scripts' -OutVariable Plan
Come illustrato nell'output seguente, il piano di aggiornamento illustra in modo dettagliato il file e i punti di offset specifici che necessitano di modifiche per lo spostamento dai cmdlet AzureRM ai cmdlet Az di PowerShell.
Order Location UpgradeType PlanResult Original
----- -------- ----------- ---------- --------
1 compute-create-dockerhost.ps1:59:24 CmdletParameter ReadyToUpgrade ExtensionName
2 compute-create-dockerhost.ps1:59:1 Cmdlet ReadyToUpgrade Set-AzureRmVM...
3 compute-create-dockerhost.ps1:54:1 Cmdlet ReadyToUpgrade New-AzureRmVM
4 compute-create-dockerhost.ps1:51:1 Cmdlet ReadyToUpgrade Add-AzureRmVM...
5 compute-create-dockerhost.ps1:47:1 Cmdlet ReadyToUpgrade Add-AzureRmVM...
6 compute-create-dockerhost.ps1:46:1 Cmdlet ReadyToUpgrade Set-AzureRmVM...
7 compute-create-dockerhost.ps1:45:1 Cmdlet ReadyToUpgrade Set-AzureRmVM...
8 compute-create-dockerhost.ps1:44:13 Cmdlet ReadyToUpgrade New-AzureRmVM...
9 compute-create-dockerhost.ps1:40:8 Cmdlet ReadyToUpgrade New-AzureRmNe...
10 compute-create-dockerhost.ps1:36:8 Cmdlet ReadyToUpgrade New-AzureRmNe...
11 compute-create-dockerhost.ps1:31:16 Cmdlet ReadyToUpgrade New-AzureRmNe...
12 compute-create-dockerhost.ps1:26:15 Cmdlet ReadyToUpgrade New-AzureRmNe...
13 compute-create-dockerhost.ps1:22:8 Cmdlet ReadyToUpgrade New-AzureRmPu...
14 compute-create-dockerhost.ps1:18:9 Cmdlet ReadyToUpgrade New-AzureRmVi...
15 compute-create-dockerhost.ps1:15:17 Cmdlet ReadyToUpgrade New-AzureRmVi...
16 compute-create-dockerhost.ps1:12:1 Cmdlet ReadyToUpgrade New-AzureRmRe...
17 compute-create-windowsvm-quick.ps1:18:3 CmdletParameter ReadyToUpgrade ImageName
18 compute-create-windowsvm-quick.ps1:14:1 Cmdlet ReadyToUpgrade New-AzureRmVM
19 compute-create-windowsvm-quick.ps1:11:1 Cmdlet ReadyToUpgrade New-AzureRmRe...
20 compute-create-wordpress-mysql.ps1:59:24 CmdletParameter ReadyToUpgrade ExtensionName
...
Prima di eseguire l'aggiornamento, è necessario visualizzare i risultati del piano per verificare la presenza di problemi. L'esempio seguente restituisce un elenco di script e degli elementi al loro interno che ne eviteranno l'aggiornamento automatico.
# Filter plan results to only warnings and errors
$Plan | Where-Object PlanResult -ne ReadyToUpgrade | Format-List
Gli elementi mostrati nell'output seguente non verranno aggiornati automaticamente senza prima correggere manualmente i problemi.
Order : 42
UpgradeType : CmdletParameter
PlanResult : ErrorParameterNotFound
PlanSeverity : Error
PlanResultReason : Parameter was not found in Get-AzResource or it's aliases.
SourceCommand : CommandReference
SourceCommandParameter : CommandReferenceParameter
Location : devtestlab-add-marketplace-image-to-lab.ps1:14:74
FullPath : C:\Scripts\devtestlab-add-marketplace-image-to-lab.ps1
StartOffset : 556
Original : ResourceNameEquals
Replacement :
Passaggio 2: Eseguire l'aggiornamento
Attenzione
Non è disponibile alcuna operazione di annullamento. Assicurarsi sempre che sia disponibile una copia di backup degli script e dei moduli di PowerShell che si sta provando ad aggiornare.
Quando si è soddisfatti del piano, l'aggiornamento viene eseguito con il cmdlet Invoke-AzUpgradeModulePlan
. Specificare SaveChangesToNewFiles
per il valore del parametro FileEditMode
per impedire che vengano apportate modifiche agli script originali. In questa modalità l'aggiornamento viene eseguito creando una copia di ogni script di destinazione con _az_upgraded
aggiunto alla fine dei nomi file.
Avviso
Il cmdlet Invoke-AzUpgradeModulePlan
è distruttivo se si specifica l'opzione -FileEditMode ModifyExistingFiles
. Modifica gli script e le funzioni sul posto in base al piano di aggiornamento del modulo generato dal cmdlet New-AzUpgradeModulePlan
. Per l'opzione non distruttiva specificare invece -FileEditMode SaveChangesToNewFiles
.
# Execute the automatic upgrade plan and save the results to a variable.
Invoke-AzUpgradeModulePlan -Plan $Plan -FileEditMode SaveChangesToNewFiles -OutVariable Results
Order Location UpgradeType UpgradeResult Original
----- -------- ----------- ------------- --------
1 compute-create-dockerhost.ps1:59:24 CmdletParameter UpgradeCompleted ExtensionName
2 compute-create-dockerhost.ps1:59:1 Cmdlet UpgradeCompleted Set-AzureRmVMExtens...
3 compute-create-dockerhost.ps1:54:1 Cmdlet UpgradeCompleted New-AzureRmVM
4 compute-create-dockerhost.ps1:51:1 Cmdlet UpgradeCompleted Add-AzureRmVMSshPub...
5 compute-create-dockerhost.ps1:47:1 Cmdlet UpgradeCompleted Add-AzureRmVMNetwor...
6 compute-create-dockerhost.ps1:46:1 Cmdlet UpgradeCompleted Set-AzureRmVMSource...
7 compute-create-dockerhost.ps1:45:1 Cmdlet UpgradeCompleted Set-AzureRmVMOperat...
8 compute-create-dockerhost.ps1:44:13 Cmdlet UpgradeCompleted New-AzureRmVMConfig
9 compute-create-dockerhost.ps1:40:8 Cmdlet UpgradeCompleted New-AzureRmNetworkI...
10 compute-create-dockerhost.ps1:36:8 Cmdlet UpgradeCompleted New-AzureRmNetworkS...
11 compute-create-dockerhost.ps1:31:16 Cmdlet UpgradeCompleted New-AzureRmNetworkS...
12 compute-create-dockerhost.ps1:26:15 Cmdlet UpgradeCompleted New-AzureRmNetworkS...
13 compute-create-dockerhost.ps1:22:8 Cmdlet UpgradeCompleted New-AzureRmPublicIp...
14 compute-create-dockerhost.ps1:18:9 Cmdlet UpgradeCompleted New-AzureRmVirtualN...
15 compute-create-dockerhost.ps1:15:17 Cmdlet UpgradeCompleted New-AzureRmVirtualN...
16 compute-create-dockerhost.ps1:12:1 Cmdlet UpgradeCompleted New-AzureRmResource...
17 compute-create-windowsvm-quick.ps1:18:3 CmdletParameter UpgradeCompleted ImageName
18 compute-create-windowsvm-quick.ps1:14:1 Cmdlet UpgradeCompleted New-AzureRmVM
19 compute-create-windowsvm-quick.ps1:11:1 Cmdlet UpgradeCompleted New-AzureRmResource...
20 compute-create-wordpress-mysql.ps1:59:24 CmdletParameter UpgradeCompleted ExtensionName
...
Se vengono restituiti errori, è possibile esaminare in modo più dettagliato i risultati dell'errore con il comando seguente:
# Filter results to show only errors
$Results | Where-Object UpgradeResult -ne UpgradeCompleted | Format-List
Order : 42
UpgradeType : CmdletParameter
UpgradeResult : UnableToUpgrade
UpgradeSeverity : Error
UpgradeResultReason : Parameter was not found in Get-AzResource or it's aliases.
SourceCommand : CommandReference
SourceCommandParameter : CommandReferenceParameter
Location : devtestlab-add-marketplace-image-to-lab.ps1:14:74
FullPath : C:\Scripts\devtestlab-add-marketplace-image-to-lab.ps1
StartOffset : 556
Original : ResourceNameEquals
Replacement :
Limiti
- Le operazioni di I/O del file usano la codifica predefinita. Le situazioni insolite per la codifica del file possono provocare problemi.
- I cmdlet di AzureRM passati come argomenti alle istruzioni fittizie degli unit test Pester non vengono rilevati.
Come segnalare i problemi
Inviare feedback e segnalare problemi sul modulo Az.Tools.Migration di PowerShell tramite un problema di GitHub nel repository azure-powershell-migration
.
Passaggi successivi
- Passaggi della migrazione
- Eseguire automaticamente la migrazione degli script di PowerShell
- Introduzione al modulo Az PowerShell
- Modifiche tra AzureRM e Az
- Installare il modulo Az PowerShell
- Disinstallare AzureRM
Per altre informazioni sul modulo Az PowerShell, vedere la documentazione di Azure PowerShell
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per