Oggetti contesto di Azure PowerShell

Azure PowerShell usa gli oggetti contesto di Azure PowerShell (contesti di Azure) per memorizzare informazioni su sottoscrizioni e autenticazione. Se si ha accesso a più sottoscrizioni, i contesti di Azure consentono di selezionare la sottoscrizione in cui eseguire i cmdlet di Azure PowerShell. I contesti di Azure possono anche essere usati per archiviare informazioni di accesso tra più sessioni di PowerShell e per eseguire attività in background.

Questo articolo riguarda i contesti di Azure, non la gestione di sottoscrizioni o account. Per gestire utenti, sottoscrizioni, tenant o altre informazioni sull'account, vedere la documentazione di Microsoft Entra ID. Per informazioni sull'uso di contesti per l'esecuzione in background di attività parallele, vedere Eseguire i cmdlet di Azure PowerShell in processi di PowerShell dopo aver acquisito familiarità con i contesti di Azure.

Panoramica degli oggetti contesto di Azure

I contesti di Azure sono oggetti di PowerShell che rappresentano la sottoscrizione attiva in cui eseguire i comandi e le informazioni di autenticazione necessarie per connettere Azure al cloud. Con i contesti di Azure, non è necessario ripetere l'autenticazione dell'account in Azure PowerShell ogni volta che si cambia sottoscrizione. Un contesto di Azure è costituito da:

  • L'account usato per accedere ad Azure con Connect-AzAccount. I contesti di Azure considerano gli utenti, gli ID applicazione e le entità servizio allo stesso modo dal punto di vista di un account.
  • La sottoscrizione attiva, un contratto di servizi stipulato con Microsoft per la creazione e l'esecuzione delle risorse di Azure, che sono associate a un tenant. I tenant vengono spesso citati come organizzazioni nella documentazione e durante l'uso di Microsoft Entra.
  • Un riferimento a una cache del token, un token di autenticazione archiviato per l'accesso al cloud di Azure. Le impostazioni di salvataggio automatico del contesto determinano dove è archiviato il token e per quanto tempo viene mantenuto.

Per altre informazioni su questi termini, vedere Terminologia di Microsoft Entra. I token di autenticazione usati dai contesti di Azure sono uguali ad altri token archiviati che fanno parte di una sessione persistente.

Quando si accede con Connect-AzAccount, viene creato almeno un contesto di Azure per la sottoscrizione predefinita. L'oggetto restituito da Connect-AzAccount è il contesto di Azure predefinito usato per il resto della sessione di PowerShell.

Ottenere i contesti di Azure

I contesti di Azure disponibili vengono recuperati con il cmdlet Get-AzContext. Elencare i contesti disponibili con il parametro ListAvailable:

Get-AzContext -ListAvailable

Oppure ottenere un contesto per nome:

Get-AzContext -Name MyContextName

I nomi dei contesti possono essere diversi dal nome della sottoscrizione associata. Per determinare il nome del contesto, usare il valore della proprietà Name, che non viene visualizzata per impostazione predefinita.

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

Importante

I contesti di Azure disponibili non corrispondono sempre alle sottoscrizioni disponibili, I contesti di Azure rappresentano solo informazioni archiviate in locale. È possibile ottenere le sottoscrizioni con il cmdlet Get-AzSubscription.

Creare un nuovo contesto di Azure dalle informazioni della sottoscrizione

Il cmdlet Set-AzContext viene usato per creare e impostare nuovi contesti di Azure come contesto attivo. Il modo più semplice per creare un nuovo contesto di Azure consiste nell'usare le informazioni della sottoscrizione esistenti. Il cmdlet Set-AzContext è progettato per accettare l'oggetto di output da Get-AzSubscription come valore inviato tramite pipe e configurare un nuovo contesto di Azure:

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

In alternativa, specificare il nome o l'ID della sottoscrizione oppure l'ID tenant, se necessario:

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

Se il parametro Name viene omesso, per il nome del contesto vengono usati il nome e l'ID della sottoscrizione, nel formato Subscription Name (subscription-id).

Cambiare il contesto di Azure attivo

Sia Set-AzContext che Select-AzContext possono essere usati per modificare il contesto di Azure attivo. Come descritto nella sezione Creare un nuovo contesto di Azure, Set-AzContext crea un nuovo contesto di Azure per una sottoscrizione, se non ne esiste già uno, e quindi imposta tale contesto come quello attivo.

Select-AzContext deve essere usato solo con i contesti di Azure esistenti e funziona in modo simile all'uso di Set-AzContext -Context, ma è destinato all'uso con le pipeline:

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

Analogamente a molti altri comandi di gestione di account e contesti disponibili in Azure PowerShell, Set-AzContext e Select-AzContext supportano il parametro Scope, quindi è possibile controllare il periodo di tempo in cui il contesto è attivo. Scope consente di cambiare il contesto attivo di una singola sessione senza cambiare l'impostazione predefinita:

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

Per evitare di cambiare contesto per un'intera sessione di PowerShell, è possibile eseguire i comandi di Azure PowerShell con un parametro AzContext in un determinato contesto:

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

L'altro uso principale dei contesti con i cmdlet di Azure PowerShell consiste nell'esecuzione di comandi in background. Per altre informazioni sull'esecuzione di processi di PowerShell con Azure PowerShell, vedere Eseguire i cmdlet di Azure PowerShell nei processi di PowerShell.

Salvare i contesti di Azure tra sessioni di PowerShell

Per impostazione predefinita, i contesti di Azure vengono salvati per l'uso tra sessioni di PowerShell. È possibile cambiare questo comportamento nei modi seguenti:

  • Accedere usando -Scope Process con Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

    Il contesto di Azure restituito come parte di questo accesso è valido solo per la sessione corrente e non viene salvato automaticamente, indipendentemente dall'impostazione di salvataggio automatico dei contesti di Azure PowerShell.

  • Disabilitare il salvataggio automatico del contesto in Azure PowerShell con il cmdlet Disable-AzContextAutosave. La disabilitazione del salvataggio automatico non comporta la cancellazione di eventuali token archiviati. Per informazioni su come cancellare le informazioni dei contesti di Azure, vedere Rimuovere i contesti e le credenziali archiviate di Azure.

  • Abilitare in modo esplicito il salvataggio automatico del contesto di Azure con il cmdlet Enable-AzContextAutosave. Con il salvataggio automatico abilitato, i contesti dell'utente vengono archiviati in locale per sessioni di PowerShell successive.

  • Salvare manualmente i contesti con Save-AzContext per l'uso nelle sessioni future di PowerShell, in cui possono essere caricati 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
    

Avviso

La disabilitazione del salvataggio automatico dei contesti non comporta la cancellazione delle informazioni salvate dei contesti archiviati. Per rimuovere le informazioni archiviate, usare il cmdlet Clear-AzContext. Per altre informazioni sulla rimozione dei contesti salvati, vedere Rimuovere i contesti e le credenziali archiviate di Azure.

Ognuno di questi comandi supporta il parametro Scope, che accetta un valore Process per applicarlo solo al processo corrente in esecuzione. Ad esempio, per assicurarsi che i contesti appena creati non vengano salvati dopo l'uscita da una sessione di PowerShell:

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

Le informazioni dei contesti e i token vengono archiviati nella directory $env:USERPROFILE\.Azure in Windows e $HOME/.Azure in altre piattaforme. Le informazioni riservate, come gli ID sottoscrizione e gli ID tenant, possono essere comunque esposte nelle informazioni archiviate, tramite log o contesti salvati. Per informazioni su come cancellare le informazioni archiviate, vedere Rimuovere i contesti e le credenziali archiviate di Azure.

Rimuovere contesti e credenziali archiviate di Azure

Per cancellare contesti e credenziali di Azure:

  • Disconnettersi da un account con Disconnect-AzAccount. È possibile disconnettersi da qualsiasi account in base ad account o contesto:

    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
    

    Con la disconnessione vengono sempre rimossi i token di autenticazione e vengono cancellati i contesti salvati associati all'utente o al contesto disconnesso.

  • Usare Clear-AzContext. Questo cmdlet rimuove sempre i contesti e i token di autenticazione archiviati ed esegue la disconnessione.

  • Rimuovere un contesto con Remove-AzContext:

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

    Se si rimuove il contesto attivo, si viene disconnessi da Azure ed è necessario ripetere l'autenticazione con Connect-AzAccount.

Vedi anche