Partager via


Migrer automatiquement des scripts PowerShell d’AzureRM vers le module Az PowerShell

Dans cet article, vous allez apprendre à utiliser le module PowerShell Az.Tools.Migration pour mettre à niveau automatiquement vos scripts Et modules de script PowerShell d’AzureRM vers le module Az PowerShell. Pour plus d’options de migration, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Avertissement

Le module AzureRM PowerShell a été officiellement déconseillé depuis le 29 février 2024. Les utilisateurs sont invités à migrer d’AzureRM vers le module Az PowerShell pour garantir une prise en charge et des mises à jour continues.

Il est possible que le module AzureRM fonctionne encore, mais il ne fait plus l’objet de maintenance ni de support. L’utilisateur peut continuer à s’en servir s’il le souhaite, à ses propres risques. Consultez nos ressources sur la migration pour obtenir des conseils sur la transition vers le module Az.

Spécifications

  • Mettez à jour vos scripts PowerShell existants vers la dernière version du module PowerShell AzureRM (6.13.1).

  • Installez le module PowerShell Az.Tools.Migration.

    Install-Module -Name Az.Tools.Migration
    

Étape 1 : Générer un plan de mise à niveau

Vous utilisez l’applet de commande New-AzUpgradeModulePlan pour générer un plan de mise à niveau pour la migration de vos scripts et modules vers le module Az PowerShell. Cette applet de commande n’apporte aucune modification à vos scripts existants. Utilisez le paramètre FilePath pour cibler un script spécifique ou le paramètre DirectoryPath pour cibler tous les scripts dans un dossier spécifique.

Remarque

L’applet de commande New-AzUpgradeModulePlan n’exécute pas le plan, mais génère uniquement les étapes de mise à niveau.

L’exemple suivant génère un plan pour tous les scripts du dossier C:\Scripts. Le paramètre OutVariable est spécifié afin que les résultats soient retournés et stockés simultanément dans une variable nommée 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

Comme indiqué dans le résultat suivant, le plan de mise à niveau détaille les fichiers spécifiques et les points de décalage qui nécessitent des modifications lors du passage d’AzureRM aux cmdlets 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
...

Avant d’effectuer la mise à niveau, vous devez consulter les résultats du plan pour identifier les problèmes. L’exemple suivant retourne une liste de scripts et les éléments de ces scripts qui les empêchent d’être mis à niveau automatiquement.

# Filter plan results to only warnings and errors
$Plan | Where-Object PlanResult -ne ReadyToUpgrade | Format-List

Les éléments indiqués dans la sortie suivante ne seront pas mis à niveau automatiquement sans corriger manuellement les problèmes en premier.

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            :

Étape 2 : Effectuer la mise à niveau

Avertissement

Il n’y a pas d’opération d’annulation. Vérifiez toujours que vous disposez d’une copie de sauvegarde de vos scripts et modules PowerShell que vous tentez de mettre à niveau.

Une fois que vous êtes satisfait du plan, la mise à niveau est effectuée avec l’applet de commande Invoke-AzUpgradeModulePlan. Spécifiez SaveChangesToNewFiles pour la valeur du paramètre FileEditMode pour empêcher les modifications apportées à vos scripts d’origine. Lorsque vous utilisez ce mode, la mise à niveau s’effectue en créant une copie de chaque script ciblé avec _az_upgraded ajouté aux noms de fichiers.

Avertissement

L’applet de commande Invoke-AzUpgradeModulePlan est destructrice lorsque l’option -FileEditMode ModifyExistingFiles est spécifiée ! Il modifie vos scripts et fonctions en place en fonction du plan de mise à niveau du module généré par l’applet de commande New-AzUpgradeModulePlan. Pour choisir l’option non destructrice, spécifiez -FileEditMode SaveChangesToNewFiles à la place.

# 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
...

Si des erreurs sont retournées, vous pouvez les examiner de plus près à l’aide de la commande suivante :

# 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            :

Limites

  • Les opérations d’E/S de fichier utilisent l’encodage par défaut. Des situations d’encodage de fichiers inhabituelles peuvent entraîner des problèmes.
  • Les applets de commande AzureRM qui sont passées comme des arguments aux instructions fictives de test unitaire Pester ne seront pas détectées.

Comment signaler des problèmes

Vous pouvez nous envoyer vos commentaires et nous signaler des problèmes au sujet du module PowerShell Az.Tools.Migration en créant un problème GitHub dans le dépôt azure-powershell-migration.

Étapes suivantes

Pour plus d’informations sur le module Az PowerShell, consultez la Documentation Azure PowerShell.