Migrar automaticamente os scripts do PowerShell do AzureRM para o módulo Az PowerShell
Neste artigo, aprenderá a utilizar o módulo Az.Tools.Migration PowerShell para atualizar automaticamente os scripts do PowerShell e os módulos de script do AzureRM para o módulo Az PowerShell. Para obter opções de migração adicionais, veja Migrar o Azure PowerShell do AzureRM para o Az.
Aviso
O módulo AzureRM do PowerShell foi oficialmente preterido a partir de 29 de fevereiro de 2024. Os usuários são aconselhados a migrar do AzureRM para o módulo Az PowerShell para garantir suporte e atualizações contínuos.
Embora o módulo AzureRM ainda possa funcionar, ele não é mais mantido ou suportado, colocando qualquer uso continuado a critério e risco do usuário. Consulte nossos recursos de migração para obter orientação sobre a transição para o módulo Az.
Requisitos
Atualize os scripts do PowerShell existentes para a versão mais recente do módulo do AzureRM PowerShell (6.13.1).
Instale o módulo Az.Tools.Migration do PowerShell.
Install-Module -Name Az.Tools.Migration
Etapa 1: gerar um plano de atualização
Pode utilizar o cmdlet New-AzUpgradeModulePlan
para gerar um plano de atualização para migrar os seus scripts e módulos para o módulo Az PowerShell. Este cmdlet não faz nenhuma alteração aos scripts existentes. Utilize o parâmetro FilePath
para direcionar um script específico ou o parâmetro DirectoryPath
para direcionar todos os scripts numa pasta específica.
Nota
O cmdlet New-AzUpgradeModulePlan
não executa o plano, apenas gera os passos de atualização.
O exemplo seguinte gera um plano para todos os scripts na pasta C:\Scripts
. O parâmetro OutVariable
é especificado para que os resultados sejam devolvidos e armazenados simultaneamente numa variável chamada 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
Conforme mostrado na saída seguinte, o plano de atualização detalha o ficheiro específico e os pontos de deslocamento que requerem alterações quando migrar do AzureRM para os cmdlets do Az 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
...
Antes de executar a atualização, tem de ver os resultados do plano para verificar a existência de problemas. O exemplo seguinte devolve uma lista de scripts e os itens nesses scripts que os impedirão de serem atualizados automaticamente.
# Filter plan results to only warnings and errors
$Plan | Where-Object PlanResult -ne ReadyToUpgrade | Format-List
Os itens mostrados na saída a seguir não serão atualizados automaticamente sem corrigir manualmente os problemas primeiro.
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 :
Etapa 2: Executar a atualização
Atenção
Não existe nenhuma operação de anulação. Verifique sempre se tem uma cópia de segurança dos módulos e scripts do PowerShell que está a tentar atualizar.
Depois de estar satisfeito com o plano, a atualização é executada com o cmdlet Invoke-AzUpgradeModulePlan
. Especifique SaveChangesToNewFiles
para o valor do parâmetro FileEditMode
para impedir que sejam feitas alterações aos scripts originais. Ao utilizar este modo, a atualização é executada ao criar uma cópia de cada script direcionado com _az_upgraded
acrescentado aos nomes de ficheiro.
Aviso
O cmdlet Invoke-AzUpgradeModulePlan
é destrutivo quando a opção -FileEditMode ModifyExistingFiles
está especificada! Modifica os scripts e funções em vigor de acordo com o plano de atualização do módulo gerado pelo cmdlet New-AzUpgradeModulePlan
. Para a opção não destrutiva, especifique -FileEditMode SaveChangesToNewFiles
como alternativa.
# 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 forem devolvidos erros, pode examinar mais atentamente os resultados dos erros com o seguinte comando:
# 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 :
Limitações
- As operações de E/S de ficheiros utilizam a codificação predefinida. Situações de codificação de ficheiros invulgares podem causar problemas.
- Os cmdlets do AzureRM transmitidos como argumentos às instruções de simulação de testes de unidades Pester não são detetados.
Como reportar problemas
Reporte comentários e problemas sobre o módulo Az.Tools.Migration PowerShell através de um problema do GitHub no repositório azure-powershell-migration
.
Próximos passos
- Passos de Migração
- Migrar automaticamente scripts do PowerShell
- Apresentando o módulo Az PowerShell
- Alterações entre AzureRM e Az
- Instalar o módulo Az PowerShell
- Desinstalar o AzureRM
Para saber mais sobre o módulo Az PowerShell, veja a documentação do Azure PowerShell