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 內容包含:
- 用來使用 登入 Azure 的
Connect-AzAccount。 Azure 內容會從帳戶的觀點中,以相同的方式對待使用者、應用程式識別碼和服務主體。 - 作用中 訂用帳戶,是與 Microsoft 簽訂的服務合約,以建立和執行與 租用戶相關聯的 Azure 資源。 租用戶通常在檔中或使用 Microsoft Entra 時稱為 組織 。
- 權杖快取的參考,用於存取 Azure 雲端的預存驗證權杖。 內容自動儲存設定會決定權杖的儲存位置,以及權杖的保存時間。
如需這些術語的詳細資訊,請參閱 Microsoft Entra 術語。 Azure 內容所使用的驗證權杖與屬於持續性工作階段一部分的其他預存權杖相同。
當您使用 Connect-AzAccount登入時,至少會為您的預設訂用帳戶建立一個 Azure 內容。 傳回的 Connect-AzAccount 物件是用於 PowerShell 會話其餘部分的預設 Azure 內容。
取得 Azure 內容
可用的 Azure 內容會使用 Cmdlet 擷取 Get-AzContext 。 使用 ListAvailable 參數列出可用的前後關聯:
Get-AzContext -ListAvailable
或按名稱獲取上下文:
Get-AzContext -Name MyContextName
環境定義名稱可能與相關聯訂閱的名稱不同。 若要判斷內容名稱,請使用 Name 屬性的值,預設不會顯示該屬性。
Get-AzContext -ListAvailable | Select-Object -Property *
這很重要
可用的 Azure 內容不一定是您可用的訂用帳戶。 Azure 內容僅代表本機儲存的資訊。 您可以使用 Cmdlet 取得 Get-AzSubscription 訂用帳戶。
從訂用帳戶資訊建立新的 Azure 內容
Cmdlet Set-AzContext 可用來建立新的 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 參數,則訂閱的名稱和 ID 會用作格式 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-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 ProcessConnect-AzAccount登入。Connect-AzAccount -Scope Process在此登入中傳回的 Azure 內容 僅 對目前工作階段有效,而且不論 Azure PowerShell 內容自動儲存設定為何,都不會自動儲存。
使用 Cmdlet 在
Disable-AzContextAutosaveAzure PowerShell 中停用內容自動儲存。 停用內容自動儲存不會清除任何儲存的權杖。 若要瞭解如何清除儲存的 Azure 內容資訊,請參閱 移除 Azure 內容和儲存的認證。明確啟用 Azure 內容自動儲存可以使用 Cmdlet 來
Enable-AzContextAutosave啟用。 啟用自動儲存後,使用者的內容會儲存在本機,以供稍後的 PowerShell 工作階段使用。手動儲存內容,
Save-AzContext以便在未來的 PowerShell 會話中使用,其中可以使用:Import-AzContextSave-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重新驗證。