Migrer d’AzureRM vers Azure PowerShell Az dans Azure Stack Hub
Le module Az a une parité de fonctionnalité avec AzureRM, mais utilise des noms d’applets de commande plus courts et plus cohérents. Les scripts écrits pour les applets de commande AzureRM ne fonctionnent pas automatiquement avec le nouveau module. Pour faciliter la transition, Az offre des outils pour vous permettre d’exécuter vos scripts existants à l’aide d’AzureRM. Aucune migration vers un nouveau jeu de commandes n’est jamais pratique, mais cet article vous aidera à commencer à passer au nouveau module.
Pour afficher la liste complète des modifications majeures entre AzureRM et Az, consultez le guide de migration pour Az 1.0.0
Rechercher les versions installées d’AzureRM
Avant de suivre les étapes de migration, vérifiez quelles versions d’AzureRM sont installées sur votre système. Cela vous permet de vous assurer que les scripts sont déjà en cours d’exécution sur la dernière version et indiquez si vous pouvez activer des alias de commande sans désinstaller AzureRM.
Pour vérifier la ou les versions d’AzureRM que vous avez installées, exécutez la commande :
Get-InstalledModule -Name AzureRM -AllVersions
Vérifier que les scripts actuels fonctionnent avec AzureRM
C’est l’étape la plus importante ! Exécutez vos scripts existants et assurez-vous qu’ils fonctionnent avec la dernière version d’AzureRM (2.5.0). Si vos scripts ne fonctionnent pas, veillez à lire le guide de migration AzureRM.
Installer le module Azure PowerShell Az
La première étape consiste à installer le module Az sur votre plateforme. Lorsque vous installez Az, il est recommandé de désinstaller AzureRM. Dans les étapes suivantes, vous allez apprendre à continuer à exécuter vos scripts existants et à activer la compatibilité pour les anciens noms d’applet de commande.
Pour installer le module Azure PowerShell Az, procédez comme suit :
- Recommandé : désinstaller le module AzureRM. Veillez à supprimer toutes les versions installées d’AzureRM, pas seulement la version la plus récente.
- Installer le module Az
Activer les alias de compatibilité AzureRM
Important
Activez uniquement le mode de compatibilité si vous avez désinstallé toutes les versions d’AzureRM. L’activation du mode de compatibilité avec les applets de commande AzureRM toujours disponibles peut entraîner un comportement imprévisible. Ignorez cette étape si vous avez décidé de conserver AzureRM installé, mais sachez que toutes les applets de commande AzureRM utilisent les anciens modules et n’appellent pas d’applets de commande Az.
Avec AzureRM désinstallé et vos scripts qui fonctionnent avec la dernière version d’AzureRM, l’étape suivante consiste à activer le mode de compatibilité pour le module Az. La compatibilité est activée avec la commande :
Enable-AzureRmAlias -Scope CurrentUser
Les alias permettent d’utiliser les anciens noms d’applet de commande avec le module Az installé. Ces alias sont enregistrés dans le profil utilisateur pour l’étendue sélectionnée. Si aucun profil utilisateur n’existe, il en est créé un.
Avertissement
Vous pouvez utiliser une autre -Scope
pour cette commande, mais il n’est pas recommandé. Les alias sont écrits dans le profil utilisateur pour l’étendue sélectionnée. Ainsi, poursuivez leur activation pour une étendue aussi limitée que possible. L'activation des alias à l'échelle du système peut également entraîner des problèmes pour d'autres utilisateurs pour lesquels AzureRM est installé dans leur environnement local.
Une fois le mode alias activé, réexécutez vos scripts pour confirmer qu’ils fonctionnent toujours comme prévu.
Modifier les noms des modules et des applets de commande
En général, les noms des modules ont été modifiés afin que AzureRM
et Azure
deviennent Az
, et les mêmes pour les applets de commande.
Par exemple, le module AzureRM.Compute
a été renommé en Az.Compute
. New-AzureRMVM
est devenu New-AzVM
, et Get-AzureStorageBlob
est maintenant Get-AzStorageBlob
.
Il existe des exceptions à cette modification de nommage dont vous devez être conscient. Certains modules ont été renommés ou fusionnés dans des modules existants sans affecter le suffixe de leurs applets de commande, autre que la modification de AzureRM
ou de Azure
à Az
. Sinon, le suffixe complet de l’applet de commande a été modifié pour refléter le nouveau nom du module.
Module AzureRM | Module Az | Le suffixe de la cmdlet a-t-il été modifié ? |
---|---|---|
AzureRM.Profile | Az.Accounts | Oui |
AzureRM.Insights | Az.Monitor | Oui |
AzureRM.Tags | Az.Resources | Non |
AzureRM.UsageAggregates | Az.Billing | Non |
AzureRM.Consumption | Az.Billing | Non |
Résumé
En suivant ces étapes, vous pouvez mettre à jour tous vos scripts existants pour utiliser le nouveau module. Si vous avez des questions ou des problèmes avec ces étapes qui ont rendu votre migration difficile, veuillez commenter cet article afin que nous puissions améliorer les instructions.
Changements cassants pour Az 1.0.0
Ce document fournit des informations détaillées sur les modifications entre AzureRM 6.x et le nouveau module Az, version 1.x et ultérieure. La table des matières vous aidera à parcourir un chemin de migration complet, y compris les modifications spécifiques au module susceptibles d’affecter vos scripts.
Dernières modifications générales
Cette section détaille les changements cassants généraux qui font partie de cette reconception du module Az.
Modifications des préfixes des noms des applets de commande
Dans le module AzureRM, les applets de commande ont utilisé AzureRM
ou Azure
comme préfixe de nom. Az simplifie et normalise les noms des applets de commande afin que toutes les applets de commande utilisent « Az » comme préfixe de nom d’applet de commande. Par exemple:
Get-AzureRMVM
Get-AzureKeyVaultSecret
A changé en :
Get-AzVM
Get-AzKeyVaultSecret
Pour simplifier la transition vers ces nouveaux noms d’applets de commande, Az introduit deux nouvelles applets de commande, Enable-AzureRmAlias et Disable-AzureRmAlias. Enable-AzureRmAlias
crée des alias pour les anciens noms d’applets de commande dans AzureRM qui correspondent aux noms d’applets de commande Az plus récents. L’utilisation de l’argument -Scope
avec Enable-AzureRmAlias
vous permet de choisir l’emplacement où les alias sont activés.
Par exemple, le script suivant dans AzureRM :
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Peut être exécuté avec des modifications minimales à l’aide de Enable-AzureRmAlias
:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
L’exécution de Enable-AzureRmAlias -Scope CurrentUser
active les alias pour toutes les sessions PowerShell que vous ouvrez, de sorte qu’après l’exécution de cette applet de commande, un script semblable à celui-ci n’a pas besoin d’être modifié du tout :
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Pour plus d’informations sur l’utilisation des alias des applets de commande, consultez les Informations de référence sur Enable-AzureRmAlias.
Lorsque vous êtes prêt à désactiver les alias, Disable-AzureRmAlias
supprime les alias créés. Pour des détails complets, voir la référence Disable-AzureRmAlias.
Important
Quand vous désactivez les alias, vérifiez qu’ils sont désactivés pour toutes les étendues où les alias étaient activés.
Modifications du nom du module
Les noms des modules ont changé de AzureRM.*
à Az.*
, à l’exception des modules suivants :
Module AzureRM | Module Az |
---|---|
Azure.Storage | Az.Storage |
Azure.AnalysisServices | 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 |
Les modifications apportées aux noms de modules signifient que tout script qui utilise #Requires
ou Import-Module
pour charger des modules spécifiques doit être modifié pour utiliser le nouveau module à la place. Pour les modules où le suffixe d’applet de commande n’a pas changé, cela signifie que même si le nom du module a changé, le suffixe indiquant l’espace d’opération n’a pas.
Migration des instructions requires et d’importation de module
Les scripts qui utilisent #Requires
ou Import-Module
pour déclarer une dépendance sur les modules AzureRM doivent être mis à jour pour utiliser les nouveaux noms de modules. Par exemple:
#Requires -Module AzureRM.Compute
Doit être remplacé par :
#Requires -Module Az.Compute
Pour Import-Module
:
Import-Module -Name AzureRM.Compute
Doit être remplacé par :
Import-Module -Name Az.Compute
Migration des appels d’applets de commande complets
Les scripts qui utilisent des appels d’applets de commande qualifiés par module, comme :
AzureRM.Compute\Get-AzureRmVM
Doit être modifié pour utiliser les nouveaux noms de module et d’applet de commande :
Az.Compute\Get-AzVM
Migration des dépendances de manifeste de module
Les modules qui expriment des dépendances sur les modules AzureRM via un fichier manifeste de module (.psd1) doivent mettre à jour les noms des modules dans leur section RequiredModules
:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Doit être remplacé par :
RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})
Modules supprimés
Les modules suivants ont été supprimés :
AzureRM.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
Les outils de ces services ne sont plus pris en charge activement. Les clients sont encouragés à passer à des services alternatifs dès qu’il est pratique.
Windows PowerShell 5.1 et .NET 4.7.2
L’utilisation d’Az avec PowerShell 5.1 pour Windows nécessite l’installation de .NET Framework 4.7.2. L’utilisation de PowerShell Core 6.x ou version ultérieure ne nécessite pas .NET Framework.
Suppression temporaire de la connexion utilisateur à l’aide de PSCredential
En raison des modifications apportées au flux d’authentification pour .NET Standard, nous supprimons temporairement la connexion utilisateur via PSCredential. Cette fonctionnalité sera re-introduite dans la version 1/15/2019 de PowerShell 5.1 pour Windows. Les détails sont abordés dans ce problème GitHub.
Connexion via le code d’appareil par défaut au lieu de l’invite du navigateur web
En raison des modifications apportées au flux d’authentification pour .NET Standard, nous utilisons la connexion de l’appareil comme flux de connexion par défaut lors de la connexion interactive. La connexion basée sur un navigateur web sera réinitie pour PowerShell 5.1 pour Windows comme valeur par défaut dans la version 1/15/2019. À ce stade, les utilisateurs pourront choisir la connexion de l’appareil à l’aide d’un paramètre Switch.
Changements cassants de module
Cette section détaille les changements cassants spécifiques à des applets de commande et des modules individuels.
Az.ApiManagement (précédemment AzureRM.ApiManagement)
- Suppression des applets de commande suivantes :
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Utilisez le cmdlet Set-AzApiManagement pour définir ces propriétés à la place.
- Suppression des propriétés suivantes :
- Suppression des propriétés
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
etScmHostnameConfiguration
de typePsApiManagementHostnameConfiguration
dePsApiManagementContext
. Utilisez plutôtPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
etScmCustomHostnameConfiguration
de typePsApiManagementCustomHostNameConfiguration
. - La propriété
StaticIPs
a été supprimée de PsApiManagementContext. La propriété a été divisée enPublicIPAddresses
etPrivateIPAddresses
. - Suppression de la propriété obligatoire
Location
dans la cmdlet New-AzureApiManagementVirtualNetwork.
- Suppression des propriétés
Az.Billing (précédemment AzureRM.Billing, AzureRM.Consumption et AzureRM.UsageAggregates)
- Le paramètre
InvoiceName
a été supprimé de l’applet de commandeGet-AzConsumptionUsageDetail
. Les scripts devront utiliser d’autres paramètres d’identité pour la facture.
Az.Compute (précédemment AzureRM.Compute)
- Les
IdentityIds
ont été supprimés de la propriétéIdentity
dans les objetsPSVirtualMachine
etPSVirtualMachineScaleSet
. Les scripts ne devraient plus utiliser la valeur de ce champ pour prendre des décisions de traitement. - Le type de propriété
InstanceView
de l’objetPSVirtualMachineScaleSetVM
est remplacé deVirtualMachineInstanceView
àVirtualMachineScaleSetVMInstanceView
- les propriétés
AutoOSUpgradePolicy
etAutomaticOSUpgrade
sont supprimées de la propriétéUpgradePolicy
- Le type de propriété
Sku
dansPSSnapshotUpdate
objet est remplacé deDiskSku
àSnapshotSku
VmScaleSetVMParameterSet
est supprimé deAdd-AzVMDataDisk
applet de commande, vous ne pouvez plus ajouter un disque de données individuellement à une machine virtuelle ScaleSet.
Az.KeyVault (précédemment AzureRM.KeyVault)
- La propriété
PurgeDisabled
a été supprimée des objetsPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
, etPSKeyVaultSecretAttributes
; les scripts ne doivent plus référencer la propriétéPurgeDisabled
pour prendre des décisions de traitement.
Az.Monitor (précédemment AzureRM.Insights)
Suppression des paramètres pluriels
Categories
etTimegrains
, remplacés par des noms de paramètres singuliers dans les scripts utilisant l’applet de commandeSet-AzDiagnosticSetting
.Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
Doit être remplacé par
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (précédemment AzureRM.Network)
- Suppression du paramètre
ResourceId
, désormais obsolète, de l’applet de commandeGet-AzServiceEndpointPolicyDefinition
- Suppression de la propriété déconseillée
EnableVmProtection
de l’objetPSVirtualNetwork
- Suppression de la cmdlet déconseillée
Set-AzVirtualNetworkGatewayVpnClientConfig
Les scripts ne doivent plus prendre de décisions de traitement en fonction des valeurs de ces champs.
Az.Resources (précédemment AzureRM.Resources)
Paramètre
Sku
supprimé de l’applet de commandeNew/Set-AzPolicyAssignment
Suppression du paramètre
Password
dans les cmdletsNew-AzADServicePrincipal
etNew-AzADSpCredential
. Les mots de passe sont automatiquement générés. Tout script qui a fourni le mot de passe :New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Doit être modifié pour récupérer le mot de passe à partir de la sortie :
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
Az.Storage (précédemment Azure.Storage et AzureRM.Storage)
- Pour prendre en charge la création d’un contexte de stockage Oauth avec uniquement le nom du compte de stockage, le jeu de paramètres par défaut a été modifié en
OAuthParameterSet
- Exemple :
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Exemple :
- Le paramètre
Location
est devenu obligatoire dans l’applet de commandeGet-AzStorageUsage
- Les méthodes d’API de stockage utilisent désormais le modèle asynchrone basé sur les tâches (TAP) au lieu d’appels d’API synchrones. Les exemples suivants illustrent les nouvelles commandes asynchrones :
Instantané d’objet 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
Partager un instantané
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
Annuler la suppression d’un objet blob supprimé de manière réversible
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()
Définir un niveau d’objet 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 (précédemment AzureRM.Websites)
- Suppression des propriétés déconseillées des objets
PSAppServicePlan
,PSCertificate
,PSCloningInfo
etPSSite
Étapes suivantes
- En savoir plus sur PowerShell sur Azure Stack Hub, consultez Prise en main de PowerShell dans Azure Stack Hub
- Installez le module PowerShell Az, consultez installer le module PowerShell Az pour Azure Stack Hub