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
sConnect-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
.