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-AzContext
和 Select-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-AzContext
和 Select-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 Process
與Connect-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
重新驗證。