Objets de contexte Azure PowerShell

Azure PowerShell utilise des objets de contexte Azure PowerShell (contextes Azure) pour stocker les informations d’abonnement et d’authentification. Si vous avez accès à plusieurs abonnements, les contextes Azure vous permettent de sélectionner l’abonnement sur lequel exécuter les applets de commande Azure PowerShell. Les contextes Azure sont également utilisés pour stocker des informations de connexion entre plusieurs sessions PowerShell et exécuter des tâches en arrière-plan.

Cet article traite de la gestion des contextes Azure, mais pas de la gestion des abonnements ou des comptes. Si vous souhaitez gérer des utilisateurs, des abonnements, des locataires ou d’autres informations de compte, consultez la documentation Microsoft Entra ID. Pour découvrir comment utiliser des contextes afin d’exécuter des tâches en arrière-plan ou parallèles, consultez Exécuter des applets de commande Azure PowerShell dans les travaux PowerShell après vous être familiarisé avec les contextes Azure.

Vue d’ensemble des objets de contexte Azure

Les contextes Azure sont des objets PowerShell qui représentent votre abonnement actif sur lequel exécuter des commandes, et les informations d’authentification nécessaires pour se connecter à un cloud Azure. Avec les contextes Azure, Azure PowerShell n’a pas besoin de réauthentifier votre compte chaque fois que vous changez d’abonnement. Un contexte Azure est constitué des éléments suivants :

  • Le compte qui a été utilisé pour se connecter à Azure avec Connect-AzAccount. Les contextes Azure traitent les utilisateurs, les ID d’application et les principaux de service de la même façon du point de vue d’un compte.
  • L’abonnement actif, un contrat de service avec Microsoft pour créer et exécuter des ressources Azure, qui sont associées à un locataire. Les locataires sont souvent appelés organisations dans la documentation ou lors de l’utilisation de Microsoft Entra.
  • Une référence à un cache de jeton, un jeton d’authentification stocké pour accéder à un cloud Azure. Les paramètres d’enregistrement automatique du contexte déterminent où le jeton est stocké et la durée pendant laquelle il persiste.

Pour plus d’informations sur ces termes, consultez la Terminologie Microsoft Entra. Les jetons d’authentification utilisés par les contextes Azure sont identiques aux autres jetons stockés qui font partie d’une session persistante.

Quand vous vous connectez avec Connect-AzAccount, au moins un contexte Azure est créé pour votre abonnement par défaut. L’objet retourné par Connect-AzAccount est le contexte Azure par défaut utilisé pour le reste de la session PowerShell.

Obtenir les contextes Azure

Les contextes Azure disponibles sont récupérés avec l’applet de commande Get-AzContext. Listez les contextes disponibles avec le paramètre ListAvailable :

Get-AzContext -ListAvailable

Vous pouvez aussi obtenir un contexte en utilisant son nom :

Get-AzContext -Name MyContextName

Les noms de contexte peuvent être différents du nom de l’abonnement associé. Pour déterminer le nom de contexte, utilisez la valeur de la propriété Nom, qui n’est pas affichée par défaut.

Get-AzContext -ListAvailable | Select-Object -Property *

Important

Les contextes Azure disponibles ne sont pas toujours vos abonnements disponibles. Les contextes Azure représentent seulement des informations stockées localement. Vous pouvez obtenir vos abonnements avec l’applet de commande Get-AzSubscription.

Créer un contexte Azure à partir des informations d’un abonnement

L’applet de commande Set-AzContext est utilisée pour créer et définir de nouveaux contextes Azure comme contexte actif. La façon la plus simple de créer un contexte Azure est d’utiliser les informations d’un abonnement existant. L’applet de commande Set-AzContext est conçue pour prendre l’objet de sortie de Get-AzSubscription comme valeur redirigée et pour configurer un nouveau contexte Azure :

Get-AzSubscription -SubscriptionName MySubscriptionName |
  Set-AzContext -Name MyContextName

Vous pouvez aussi donner le nom ou l’ID de l’abonnement, et l’ID du locataire, si nécessaire :

Set-AzContext -Name MyContextName -Subscription MySubscriptionName -Tenant 00000000-0000-0000-0000-000000000000

Si le paramètre Nom est omis, le nom et l’identifiant de l’abonnement sont utilisés comme nom du contexte au format Subscription Name (subscription-id).

Changer le contexte Azure actif

Set-AzContext et Select-AzContext peuvent toutes deux être utilisées pour changer le contexte Azure actif. Comme décrit dans Créer un contexte Azure, Set-AzContext crée un contexte Azure pour un abonnement s’il n’en existe pas puis utilise ce contexte comme contexte actif.

Select-AzContext est destinée à être utilisée seulement avec des contextes Azure existants ; elle fonctionne de façon similaire à Set-AzContext -Context, mais elle est conçue pour être utilisée avec le pipe :

Set-AzContext -Context (Get-AzContext -Name MyContextName) # Set a context with an inline Azure context object
Get-AzContext -Name MyContextName | Select-AzContext # Set a context with a piped Azure context object

Comme de nombreuses autres commandes de gestion de compte et de contexte dans Azure PowerShell, Set-AzContext et Select-AzContext prennent en charge le paramètre Scope, qui vous permet de contrôler le temps pendant lequel le contexte est actif. Scope vous permet de changer le contexte actif d’une seule session sans changer votre contexte par défaut :

Get-AzContext -Name MyContextName | Select-AzContext -Scope Process

Pour éviter de basculer entre les contextes pendant une session PowerShell entière, toutes les commandes Azure PowerShell peuvent être exécutées sur un contexte donné avec le paramètre AzContext :

$context = Get-AzContext -Name MyContextName
New-AzVM -Name ExampleVM -AzContext $context

L’autre utilisation primaire des contextes avec les applets de commande Azure PowerShell est d’exécuter des commandes en arrière-plan. Pour plus d’informations sur l’exécution de travaux PowerShell avec Azure PowerShell, consultez Exécuter des applets de commande Azure PowerShell dans des travaux PowerShell.

Enregistrer des contextes Azure entre des sessions PowerShell

Par défaut, les contextes Azure sont enregistrés pour une utilisation entre des sessions PowerShell. Vous pouvez changer ce comportement de l’une des façons suivantes :

  • Connectez-vous en utilisant -Scope Process avec Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

    Le contexte Azure retourné dans le cadre de cette connexion est valide seulement pour la session actuelle et n’est pas enregistré automatiquement, quel que soit le paramètre d’enregistrement automatique du contexte Azure PowerShell.

  • Désactivez l’enregistrement automatique du contexte dans Azure PowerShell avec l’applet de commande Disable-AzContextAutosave. La désactivation de l’enregistrement automatique du contexte n’efface pas les jetons stockés. Pour découvrir comment effacer les informations de contexte Azure stockées, consultez Supprimer les contextes et les informations d’identification Azure stockées.

  • Vous pouvez activer explicitement l’enregistrement automatique du contexte Azure avec l’applet de commande Enable-AzContextAutosave. Quand l’enregistrement automatique est activé, les contextes de l’utilisateur sont stockés localement pour les sessions PowerShell ultérieures.

  • Enregistrez manuellement les contextes avec Save-AzContext pour les utiliser dans des sessions PowerShell futures, où elles peuvent être chargées avec Import-AzContext :

    Save-AzContext -Path current-context.json # Save the current context
    Import-AzContext -Path other-context.json # Load the context from a file and set it to the current context
    

Avertissement

La désactivation de l’enregistrement automatique du contexte n’efface pas les informations de contexte stockées qui ont été enregistrées. Pour supprimer les informations stockées, utilisez l’applet de commande Clear-AzContext. Pour plus d’informations sur la suppression des contextes enregistrés, consultez Supprimer les contextes Azure et les informations d’identification stockées.

Chacune de ces commandes prend en charge le paramètre Scope, qui peut prendre la valeur Process pour s’appliquer seulement au processus en cours d’exécution. Par exemple, pour faire en sorte que les contextes nouvellement créés ne soient pas enregistrés après que l’utilisateur quitte une session PowerShell :

Disable-AzContextAutosave -Scope Process
Set-AzContext -Subscription 'Subscription ID or Name' -Tenant 00000000-0000-0000-0000-000000000000

Les informations de contexte et les jetons sont stockés dans le répertoire $env:USERPROFILE\.Azure sur Windows et dans $HOME/.Azure sur les autres plateformes. Des informations sensibles comme les ID d’abonnement et les ID de locataire peuvent néanmoins toujours être exposées dans des informations stockées, par le biais de journaux ou de contextes enregistrés. Pour découvrir comment effacer les informations stockées, consultez Supprimer les contextes et les informations d’identification Azure stockées.

Supprimer les contextes et les informations d’identification stockées Azure

Pour effacer les contextes et les informations d’identification Azure :

  • Déconnectez-vous d’un compte avec Disconnect-AzAccount. Vous pouvez vous déconnecter de n’importe quel compte en utilisant le compte ou le contexte :

    Disconnect-AzAccount # Disconnect active account
    Disconnect-AzAccount -Username 'user@contoso.com' # Disconnect by account name
    Disconnect-AzAccount -ContextName MyContextName # Disconnect by context name
    
    $context = Get-AzContext
    Disconnect-AzAccount -AzureContext $context # Disconnect using context object information
    

    La déconnexion supprime toujours les jetons d’authentification stockés et efface les contextes enregistrés associés à l’utilisateur ou au contexte déconnecté.

  • Utiliser Clear-AzContext. Cette applet de commande supprime toujours les contextes stockés et les jetons d’authentification puis vous déconnecte.

  • Supprimez un contexte avec Remove-AzContext :

    Remove-AzContext -Name MyContextName # Remove by name
    Get-AzContext -Name MyContextName | Remove-AzContext # Remove by piping an Azure context object
    

    Si vous supprimez le contexte actif, vous êtes déconnecté d'Azure et devez vous réauthentifier avec Connect-AzAccount.

Voir aussi