Kontextové objekty Azure PowerShellu

Azure PowerShell používá kontextové objekty Azure PowerShellu (kontexty Azure) k uložení informací o předplatném a ověřování. Pokud máte více než jedno předplatné, kontexty Azure vám umožní vybrat předplatné, ve kterém se mají spouštět rutiny Azure PowerShell. Kontexty Azure slouží také k ukládání přihlašovacích údajů napříč několika relacemi PowerShellu a ke spouštění úloh na pozadí.

Tento článek popisuje správu kontextů Azure, a ne správu předplatných nebo účtů. Pokud chcete spravovat uživatele, předplatná, tenanty nebo jiné informace o účtu, přečtěte si dokumentaci k Microsoft Entra ID . Další informace o používání kontextů pro spouštění úloh na pozadí nebo paralelních úlohách najdete v tématu Spouštění rutin Azure PowerShellu v úlohách PowerShellu po seznámení s kontexty Azure.

Přehled kontextových objektů Azure

Kontexty Azure jsou objekty PowerShellu reprezentující aktivní předplatné pro spouštění příkazů a ověřovací informace potřebné pro připojení ke cloudu Azure. V případě kontextů Azure PowerShell nemusí znovu ověřovat váš účet při každém přepnutí předplatného. Kontext Azure se skládá z těchto částí:

  • Účet, který byl použitý pro přihlášení k Azure pomocí Connect-AzAccount. Kontexty Azure považují uživatele, ID aplikací a instanční objekty z hlediska účtů za stejné.
  • Aktivní předplatné, smlouva o poskytování služeb s Microsoftem pro vytváření a spouštění prostředků Azure, které jsou přidružené k tenantovi. Tenanti se často v dokumentaci nebo při práci se službou Active Directory označují jako organizace.
  • Odkaz na mezipaměť tokenů, uložený ověřovací token pro přístup ke cloudu Azure. To, kde je tento token uložený a jak dlouhou má platnost, určují nastavení automatického ukládání kontextu.

Další informace o těchto termínech najdete v terminologii Microsoft Entra. Ověřovací tokeny používané kontexty Azure jsou stejné jako jiné uložené tokeny, které jsou součástí trvalé relace.

Když se přihlásíte pomocí Connect-AzAccount, pro vaše výchozí předplatné se vytvoří aspoň jeden kontext Azure. Objekt vrácený Connect-AzAccount je výchozím kontextem Azure, který se používá pro zbytek relace PowerShellu.

Získání kontextů Azure

Dostupné kontexty Azure se načítají pomocí rutiny Get-AzContext. Uveďte dostupné kontexty pomocí parametru ListAvailable :

Get-AzContext -ListAvailable

Nebo můžete kontext získat pomocí názvu:

Get-AzContext -Name 'mycontext'

Názvy kontextů se mohou lišit od názvu přidruženého předplatného.

Důležité

Dostupnými kontexty Azure nejsou vždycky vaše dostupná předplatná. Kontexty Azure představují pouze místně uložené informace. K získání předplatných můžete využít rutinu Get-AzSubscription.

Vytvoření nového kontextu Azure z informací o předplatném

Rutina set-AzContext slouží k vytváření nových kontextů Azure a k jejich nastavení jako aktivního kontextu. Nejjednodušší způsob, jak vytvořit nový kontext Azure, je použít stávající informace o předplatném. Rutina je navržená tak, aby převzala výstupní objekt z Get-AzSubscription jako hodnotu v kanálu a nakonfigurovala nový kontext Azure:

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

Případně zadejte název nebo ID předplatného a ID tenanta:

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

Pokud parametr Name vynecháte, název a ID předplatného se použijí jako název kontextu ve formátu Název předplatného (id předplatného).

Změna aktivního kontextu Azure

Ke změně aktivního kontextu se dá využít Set-AzContext i Select-AzContext. Jak je popsáno v tématu Vytvoření nového kontextu Azure, vytvoří nový kontext Azure pro předplatné, Set-AzContext pokud neexistuje, a pak na tento kontext přepne aktivní kontext.

Select-AzContext je určená k použití pouze s existujícími kontexty Azure a funguje podobně jako použití Set-AzContext -Context, ale je určená pro použití s pipingem:

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

Stejně jako mnoho dalších příkazů pro správu účtů a kontextu v Azure PowerShellu a Select-AzContext podporují parametr Scope, Set-AzContext abyste mohli řídit, jak dlouho je kontext aktivní. Obor umožňuje změnit aktivní kontext jedné relace beze změny výchozího nastavení:

Get-AzContext -Name 'mycontext' | Select-AzContext -Scope Process

Aby se zabránilo přepínání kontextů pro celou relaci PowerShellu, je možné spouštět příkazy Azure PowerShellu s parametrem AzContext v daném kontextu:

$context = Get-AzContext -Name "mycontext"
New-AzVM -Name ExampleVM -AzContext $context

Dalším hlavním využitím kontextů s rutinami Azure PowerShellu je spouštění příkazů na pozadí. Další informace o spouštění úloh PowerShellu pomocí Azure PowerShellu najdete v tématu Spouštění rutin Azure PowerShellu v úlohách PowerShellu.

Uložení kontextů Azure napříč relacemi PowerShellu

Ve výchozím nastavení se kontexty Azure ukládají, aby se daly využívat v různých relacích PowerShellu. Toto chování můžete změnit následujícími způsoby:

  • Přihlaste se pomocí -Scope Process s Connect-AzAccount:

    Connect-AzAccount -Scope Process
    

    Kontext Azure vrácený jako součást tohoto přihlášení je platný jenom pro aktuální relaci a automaticky se neuloží bez ohledu na nastavení automatického ukládání kontextu Azure PowerShellu.

  • Pomocí rutiny Disable-AzContextAutosave v Azure PowerShellu zakažte automatické ukládání kontextu. Zákaz automatického ukládání kontextu nevymaže žádné uložené tokeny. Informace o vymazání uložených informací kontextů Azure najdete v tématu Odebrání přihlašovacích údajů a kontextů Azure.

  • K explicitnímu povolení automatického ukládání kontextu Azure se dá použít rutina Enable-AzContextAutosave. S povoleným automatickým ukládáním se kontexty uživatele ukládají místně pro pozdější relace PowerShellu.

  • Ručně uložte kontexty pomocí rutiny Save-AzContext, aby se daly použít v budoucích relacích PowerShellu, kde se dají načíst pomocí rutiny Import-AzContext:

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

Upozorňující

Zákaz automatického ukládání kontextu nevymaže žádné uložené informace o kontextech. K odebrání uložených informací použijte rutinu Clear-AzContext. Další informace o odebírání uložených kontextů najdete v tématu věnovaném odebírání kontextů a přihlašovacích údajů.

Každý z těchto příkazů podporuje parametr Scope , který může mít hodnotu Process , která se vztahuje pouze na aktuální spuštěný proces. Pokud chcete například zajistit, aby nově vytvořené kontexty nebyly po ukončení relace PowerShellu uložené:

Disable-AzContextAutosave -Scope Process
$context2 = Set-AzContext -Subscription 'sub-id' -Tenant 'other-tenant'

Kontextové informace a tokeny se ve Windows ukládají v adresáři $env:USERPROFILE\.Azure a na jiných platformách v adresáři $HOME/.Azure. Citlivé informace, jako jsou ID předplatného a ID tenanta, se můžou dál zobrazovat v uložených informacích, prostřednictvím protokolů nebo uložených kontextů. Informace o vymazání uložených informací najdete v tématu věnovaném odebírání přihlašovacích údajů a kontextů.

Odebrání uložených přihlašovacích údajů a kontextů Azure

Pokud chcete vymazat přihlašovací údaje a kontexty Azure:

  • Odhlaste se z účtu pomocí Disconnect-AzAccount. Můžete se odhlásit z libovolného účtu, a to buď podle účtu, nebo podle kontextu:

    Disconnect-AzAccount # Disconnect active account
    Disconnect-AzAccount -Username 'user@contoso.com' # Disconnect by account name
    
    Disconnect-AzAccount -ContextName 'subscription2' # Disconnect by context name
    Disconnect-AzAccount -AzureContext $contextObject # Disconnect using context object information
    

    Odpojení vždycky odebere uložené ověřovací tokeny a vymaže uložené kontexty přidružené k odpojenému uživateli nebo kontextu.

  • Použijte Clear-AzContext. Tato rutina vždy odebere uložené kontexty, ověřovací tokeny a odhlásí vás.

  • Odeberte kontext pomocí Remove-AzContext:

    Remove-AzContext -Name 'mycontext' # Remove by name
    Get-AzContext -Name 'mycontext' | Remove-AzContext # Remove by piping Azure context object
    

    Pokud odeberete aktivní kontext, odpojíte se od Azure a budete muset znovu provést ověření pomocí Connect-AzAccount.

Viz také