共用方式為


Azure PowerShell 上下文物件

Azure PowerShell 會使用 Azure PowerShell 內容物件 (Azure 內容) 來保存訂用帳戶和驗證資訊。 如果您可以存取多個訂用帳戶,Azure 環境可讓您選取要執行 Azure PowerShell cmdlet 的訂用帳戶。 Azure 上下文也用於跨多個 PowerShell 工作階段儲存登入資訊,並執行背景任務。

本文涵蓋管理 Azure 環境,而不是管理訂閱或帳戶。 如果您想要管理使用者、訂用帳戶、租使用者或其他帳戶資訊,請參閱 Microsoft Entra ID 檔。 若要瞭解如何使用上下文來執行背景或平行工作,請在熟悉 Azure 上下文後,參閱 使用 PowerShell 作業執行 Azure PowerShell Cmdlet 的說明

Azure 內容物件概觀

Azure 上下文是 PowerShell 物件,代表您目前用來執行命令的活躍訂用帳戶,以及連接至 Azure 雲端所需的驗證資訊。 使用 Azure 內容時,Azure PowerShell 不需要在每次切換訂用帳戶時重新驗證您的帳戶。 Azure 環境包含:

  • 用來使用 Connect-AzAccount登入 Azure 的 帳戶。 Azure 內容會從帳戶的觀點來看,將使用者、應用程式標識碼和服務主體視為相同。
  • zh-TW: 活躍的 訂用帳戶是與 Microsoft 簽訂的服務合約,用於建立和執行 Azure 資源,這些資源與 租使用者相關聯。 租戶通常在文件中或使用 Microsoft Entra 時稱為 組織
  • 令牌快取的參考,這是用來存取 Azure 雲端的預存驗證令牌。 內容自動儲存設定 決定令牌的儲存位置,以及其保存時間長度。

如需這些詞彙的詳細資訊,請參閱 Microsoft Entra 術語。 Azure 內容所使用的驗證令牌與屬於持續性會話一部分的其他預存令牌相同。

當您使用 Connect-AzAccount登入時,至少會為您的預設訂用帳戶建立一個 Azure 環境。 Connect-AzAccount 傳回的物件是用於 PowerShell 會話其餘的預設 Azure 內容。

取得 Azure 上下文

可用的 Azure 環境會使用 Get-AzContext Cmdlet 來擷取。 使用參數 ListAvailable 列出可用的背景:

Get-AzContext -ListAvailable

或依名稱取得內容:

Get-AzContext -Name MyContextName

上下文名稱可能與相關訂閱的名稱不同。 若要確定內容名稱,請使用 Name 屬性的值,該值預設情況下不會顯示。

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

重要

可用的 Azure 環境未必是您的訂閱帳戶。 Azure 上下文僅代表本機儲存的資訊。 您可以使用 Get-AzSubscription Cmdlet 取得訂用帳戶。

從訂用帳戶資訊建立新的 Azure 環境

Set-AzContext Cmdlet 可用來建立新的 Azure 內容,並將新的 Azure 內容設定為使用中內容。 建立新 Azure 內容最簡單的方式是使用現有的訂用帳戶資訊。 Set-AzContext Cmdlet 命令的設計目的是要從 Get-AzSubscription 取得輸出物件作為管道值,並且設定新的 Azure 環境:

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

或者視需要提供訂用帳戶名稱或標識碼和租用戶識別碼:

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

如果省略 Name 參數,則訂用帳戶的名稱和標識碼會以 Subscription Name (subscription-id)格式作為內容名稱。

變更作用中的 Azure 上下文

Set-AzContextSelect-AzContext 都可以用來變更活躍的 Azure 上下文。 如 建立新的 Azure 環境中所述,Set-AzContext 若該訂用帳戶沒有現有的 Azure 環境,則會建立一個新的,並切換到該新的環境。

Select-AzContext 只能與現有的 Azure 內容搭配使用,而且與使用 Set-AzContext -Context類似,但設計用於管線:

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

如同 Azure PowerShell 中許多其他帳戶和內容管理命令,Set-AzContextSelect-AzContext 支援 Scope 參數,以便控制內容作用中的時間長度。 範圍 可讓您變更單一會話的作用中內容,而不需要變更預設值:

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

若要避免更換整個 PowerShell 會話的上下文,您可以使用參數 AzContext 的 Azure PowerShell 命令,針對指定的上下文執行:

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

搭配 Azure PowerShell Cmdlet 使用內容的其他主要用途是執行背景命令。 若要深入瞭解如何使用 Azure PowerShell 執行 PowerShell 作業,請參閱 在 PowerShell 作業中執行 Azure PowerShell Cmdlet

跨 PowerShell 會話儲存 Azure 內容

根據預設,Azure 情境會儲存下來以供在 PowerShell 會話之間使用。 您可以透過下列方式變更此行為:

  • 使用 -Scope ProcessConnect-AzAccount登入。

    Connect-AzAccount -Scope Process
    

    作為此登入的一部分返回的 Azure 內容僅適用於目前的工作階段,並且 無論 Azure PowerShell 內容自動儲存設定如何,這些內容都不會自動儲存。

  • 使用 Disable-AzContextAutosave Cmdlet 停用 Azure PowerShell 中的自動保存內容功能。 停用內容自動儲存並不會清除任何儲存的令牌。 若要瞭解如何清除已儲存的 Azure 內容資訊,請參閱 移除 Azure 內容和預存認證

  • 您可以使用 Enable-AzContextAutosave Cmdlet 來明確啟用 Azure 內容自動儲存。 啟用自動儲存後,使用者的情境會儲存在本機,以供稍後的 PowerShell 會話使用。

  • 使用 Save-AzContext 手動儲存內容,以在未來的PowerShell工作階段中使用,其中可以使用 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
    

警告

停用內容自動儲存並不會清除任何已儲存的內容資訊。 若要移除預存資訊,請使用 Clear-AzContext Cmdlet。 如需移除已儲存內容的詳細資訊,請參閱 移除 Azure 內容和預存認證

這些命令都支援 Scope 參數,其可接受 Process 值,只套用至目前執行中的進程。 例如,若要確保新創建的上下文在結束 PowerShell 會話之後不會儲存:

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

內容資訊和代幣會儲存在 Windows 平臺的 $env:USERPROFILE\.Azure 目錄中,其他平臺的 $HOME/.Azure 目錄中。 敏感性資訊,如訂閱 ID 和租用戶 ID 可能仍會在儲存的資訊、記錄或儲存的上下文中暴露。 若要瞭解如何清除預存資訊,請參閱 移除 Azure 內容和預存認證

移除 Azure 上下文和儲存的憑證

若要清除 Azure 環境和認證資料:

  • 使用 Disconnect-AzAccount登出帳戶。 您可以透過帳戶或使用者情境註銷任何帳戶:

    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
    

    中斷連線一律會移除已儲存的驗證憑證,並清除與已中斷用戶或上下文相關的已儲存內容。

  • 使用 Clear-AzContext。 此 Cmdlet 一律會移除儲存的上下文和驗證令牌,並登出。

  • 移除 Remove-AzContext的上下文:

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

    如果您移除使用中的上下文,則會中斷與 Azure 的連線,且需要使用 Connect-AzAccount重新驗證。

另請參閱