Azure PowerShell 內容物件
Azure PowerShell 會使用 Azure PowerShell 內容物件 (Azure 內容) 來保存訂用帳戶和驗證資訊。 如果您有權存取多個訂用帳戶,Azur 内容可讓您選取要在其上執行 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 內容會將使用者、應用程式識別碼和服務主體等同視之。 - 有效訂用帳戶是 Microsoft 提供的服務合約,用來建立和執行與租用戶相關聯的 Azure 資源。 租用戶在文件中或使用 Microsoft Entra 時,通常稱為組織。
- 權杖快取的參考是用來存取 Azure 雲端的預存驗證權杖。 内容自動儲存設定確定了權杖的儲存位置及其持續時間。
如需這些條款的詳細資訊,請參閱 Microsoft Entra 術語。 Azure 內容所使用的驗證權杖與持續性工作階段中其他已儲存的權杖相同。
當您使用 Connect-AzAccount
登入時,系統會為您的預設訂用帳戶建立至少一個 Azure 內容。 Connect-AzAccount
傳回的物件是預設的 Azure 內容,用於其餘的 PowerShell 工作階段。
取得 Azure 內容
藉由 Get-AzContext
Cmdlet 擷取可用的 Azure 内容。 您可以使用 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 內容,最簡單的方式是使用現有的訂用帳戶資訊。 此 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 參數,讓您可以控制內容的有效期間。 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 內容和已儲存的認證。若要明確啟用 Azure 內容自動儲存,可以使用
Enable-AzContextAutosave
Cmdlet 來啟用。 自動儲存啟用時,使用者內容都會儲存在本機,以供後續的 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
中。 敏感性資訊 (例如訂用帳戶識別碼和租用戶識別碼) 可能仍會透過記錄或已儲存的內容公開於已儲存的資訊中。 若要了解如何清除已儲存的資訊,請參閱移除 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
重新驗證。