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 內容包含:
- 用來使用 登入 Azure 的
Connect-AzAccount
帳戶。 Azure 內容會從帳戶的觀點來看,將使用者、應用程式標識碼和服務主體視為相同。 - 作用中的訂用帳戶,這是與租使用者相關聯的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 內容只代表本機儲存的資訊。 您可以使用 Cmdlet 取得訂用 Get-AzSubscription
帳戶。
從訂用帳戶資訊建立新的 Azure 內容
Cmdlet Set-AzContext
可用來建立和設定新的 Azure 內容作為使用中內容。 建立新 Azure 內容最簡單的方式是使用現有的訂用帳戶資訊。 Cmdlet Set-AzContext
的設計目的是要從 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 中的許多其他帳戶和內容管理命令,並支援 Select-AzContext
Scope 參數,Set-AzContext
以便控制內容作用中的時間長度。 範圍 可讓您變更單一會話的作用中內容,而不需要變更預設值:
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 內容和預存認證。您可以使用 Cmdlet 來明確啟用
Enable-AzContextAutosave
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
內容資訊和令牌會儲存在 $env:USERPROFILE\.Azure
Windows 和其他 $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
。