Compartir a través de


Objetos de contexto de Azure PowerShell

Azure PowerShell usa objetos de contexto de Azure PowerShell (contextos de Azure) para contener información de suscripción y autenticación. Si tiene acceso a varias suscripciones, los contextos de Azure le permiten seleccionar la suscripción para ejecutar cmdlets de Azure PowerShell. Los contextos de Azure también se usan para almacenar información de inicio de sesión en varias sesiones de PowerShell y ejecutar tareas en segundo plano.

En este artículo se describe la administración de contextos de Azure, no la administración de suscripciones o cuentas. Si quiere administrar usuarios, suscripciones, inquilinos u otra información de la cuenta, consulte la documentación de Microsoft Entra ID. Para más información sobre el uso de contextos para ejecutar tareas en segundo plano o paralelas, consulte Ejecución de cmdlets de Azure PowerShell en trabajos de PowerShell después de familiarizarse con los contextos de Azure.

Introducción a los objetos de contexto de Azure

Los contextos de Azure son objetos de PowerShell que representan la suscripción activa para ejecutar comandos y la información de autenticación necesaria para conectarse a una nube de Azure. Con los contextos de Azure, Azure PowerShell no necesita volver a autenticar su cuenta cada vez que cambie de suscripción. Un contexto de Azure consta de:

  • La cuenta que se usó para iniciar sesión en Azure con Connect-AzAccount. Los contextos de Azure tratan a los usuarios, los identificadores de aplicación y las entidades de servicio iguales desde la perspectiva de una cuenta.
  • La suscripción activa es un acuerdo de servicio con Microsoft para crear y ejecutar recursos de Azure que están asociados con un inquilino. A menudo se hace referencia a los inquilinos como organizaciones en la documentación o al trabajar con Microsoft Entra.
  • Referencia a una caché de tokens , un token de autenticación almacenado para acceder a una nube de Azure. La configuración de autoguardado del contexto determina dónde se almacena el token y durante cuánto tiempo persiste.

Para obtener más información sobre estos términos, consulte Terminología de Microsoft Entra. Los tokens de autenticación que usan los contextos de Azure son los mismos que otros tokens almacenados que forman parte de una sesión persistente.

Al iniciar sesión con Connect-AzAccount, se crea al menos un contexto de Azure para la suscripción predeterminada. El objeto devuelto por Connect-AzAccount es el contexto de Azure predeterminado que se usa para el resto de la sesión de PowerShell.

Obtener contextos de Azure

Los contextos de Azure disponibles se recuperan con el cmdlet Get-AzContext. Enumere los contextos disponibles con el parámetro ListAvailable:

Get-AzContext -ListAvailable

O busque un contexto por el nombre:

Get-AzContext -Name MyContextName

Los nombres de contexto pueden ser diferentes del nombre de la suscripción asociada. Para determinar el nombre de contexto, use el valor de la propiedad Name, que no se muestra de forma predeterminada.

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

Importante

Los contextos de Azure disponibles no siempre coinciden con tus suscripciones disponibles. Los contextos de Azure solo representan información almacenada localmente. Puede obtener las suscripciones con el cmdlet Get-AzSubscription.

Creación de un nuevo contexto de Azure a partir de la información de la suscripción

El cmdlet Set-AzContext se usa para crear y establecer nuevos contextos de Azure como contexto activo. La manera más fácil de crear un nuevo contexto de Azure es usar la información de suscripción existente. El cmdlet Set-AzContext está diseñado para tomar el objeto de salida de Get-AzSubscription como un valor canalizado y configurar un nuevo contexto de Azure.

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

O bien, proporcione el nombre o el identificador de la suscripción y el identificador del inquilino si es necesario:

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

Si se omite el parámetro 'Name' , entonces el nombre y el identificador de la suscripción se usan como nombre de contexto en el formato Subscription Name (subscription-id).

Cambio del contexto activo de Azure

Tanto Set-AzContext como Select-AzContext se pueden usar para cambiar el contexto activo de Azure. Como se describe en Creación de un nuevo contexto de Azure, Set-AzContext crea un nuevo contexto de Azure para una suscripción si no existe y, a continuación, cambia el contexto activo a ese.

Select-AzContext está diseñado para usarse solo con contextos de Azure existentes y funciona de forma similar al uso de Set-AzContext -Context, pero está diseñado para su uso con canalización:

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

Al igual que muchos otros comandos de administración de cuentas y contextos en Azure PowerShell, y admiten el parámetro Scope de para que pueda controlar cuánto tiempo está activo el contexto. Scope permite cambiar el contexto activo de una sola sesión sin cambiar la configuración predeterminada:

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

Para evitar cambiar los contextos de una sesión completa de PowerShell, los comandos de Azure PowerShell con un parámetro AzContext se pueden ejecutar en un contexto determinado:

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

El otro uso principal de contextos con cmdlets de Azure PowerShell es ejecutar comandos en segundo plano. Para más información sobre la ejecución de trabajos con Azure PowerShell, consulte Ejecutar cmdlets de Azure PowerShell en trabajos de PowerShell.

Guardar contextos de Azure en sesiones de PowerShell

De forma predeterminada, los contextos de Azure se guardan para su uso entre sesiones de PowerShell. Puede cambiar este comportamiento de las maneras siguientes:

  • Inicie sesión usando -Scope Process y Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

    El contexto de Azure devuelto en este inicio de sesión es válido solo para la sesión actual y no se guarda automáticamente, independientemente de la configuración de autoguardado del contexto de Azure PowerShell.

  • Deshabilite el guardado automático del contexto en Azure PowerShell con el cmdlet Disable-AzContextAutosave. Deshabilitar el autoguardado de contexto no borra ningún token almacenado. Para obtener información sobre cómo borrar la información de contexto de Azure almacenada, consulte Eliminación de contextos de Azure y credenciales almacenadas.

  • Habilitar explícitamente el autoguardado de contexto de Azure se realiza con el cmdlet Enable-AzContextAutosave. Con el guardado automático habilitado, los contextos de un usuario se almacenan localmente para sesiones posteriores de PowerShell.

  • Guarde manualmente contextos con Save-AzContext que se usarán en futuras sesiones de PowerShell, donde se pueden cargar con 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
    

Advertencia

Deshabilitar el autoguardado de contexto no borra ninguna información de contexto almacenada. Para quitar información almacenada, use el cmdlet Clear-AzContext. Para más información sobre cómo quitar contextos guardados, consulte Eliminación de contextos de Azure y credenciales almacenadas.

Cada uno de estos comandos admite el parámetro Scope, que puede tomar un valor de Process para que solo se aplique al proceso en ejecución actual. Por ejemplo, para asegurarse de que los contextos recién creados no se guardan después de salir de una sesión de PowerShell:

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

La información de contexto y los tokens se almacenan en el directorio $env:USERPROFILE\.Azure en Windows y $HOME/.Azure en otras plataformas. Es posible que la información confidencial, como los identificadores de suscripción y los identificadores de inquilino, se exponga en información almacenada, a través de registros o contextos guardados. Para obtener información sobre cómo borrar la información almacenada, consulte Eliminación de contextos de Azure y credenciales almacenadas.

Eliminación de contextos de Azure y credenciales almacenadas

Para borrar los contextos y las credenciales de Azure:

  • Cierre la sesión de una cuenta con Disconnect-AzAccount. Puede cerrar la sesión de cualquier cuenta mediante una cuenta o un contexto:

    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 desconexión siempre quita los tokens de autenticación almacenados y borra los contextos guardados asociados con el usuario o el contexto desconectados.

  • Utilice Clear-AzContext. Este cmdlet siempre quita los contextos almacenados y los tokens de autenticación y cierra la sesión.

  • Quite un contexto con Remove-AzContext:

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

    Si elimina el contexto activo, se le desconecta de Azure y tiene que volver a autenticarse con Connect-AzAccount.

Consulte también