疑難排解 Az PowerShell 模組
啟用偵錯記錄
針對 Az PowerShell 模組的問題進行疑難排解時,您應該採取的第一個步驟是啟用偵錯記錄。
若要在各個命令上啟用偵錯記錄,請指定 Debug 參數。
Get-AzResource -Name 'DoesNotExist' -Debug
若要針對整個 PowerShell 工作階段啟用偵錯記錄,請將 DebugPreference 變數的值設定為 Continue
。
$DebugPreference = 'Continue'
自動化案例中的公告訊息
使用 Azure PowerShell 連線到 Azure 時,會使用 PowerShell 的資訊串流來顯示公告訊息,以防止變更傳回的物件型輸出。 雖然我們已盡一切努力確保公告訊息不會影響您的體驗,但有些自動化案例可能還是會影響使用情況。 如果您遇到問題,建議您在這些案例中抑制資訊串流:
Connect-AzAccount -Subscription '<subscription name or id>' -InformationAction Ignore
Web 帳戶管理員 (WAM)
- 互動式登入方法無法開啟 WAM 的視窗,並傳回錯誤:使用者已取消驗證。
- 使用使用者名稱和密碼或裝置程式碼登入之後,就無法執行 Azure PowerShell Cmdlet。
- WAM 彈出視窗不會顯示 [公司和學校帳戶] 選項。
- 互動式登入方法無法在 Windows PowerShell ISE 主控台中開啟 WAM 視窗。
這些問題的因應措施是停用 WAM:
Update-AzConfig -EnableLoginByWam $false
- 用來選取帳戶的 WAM 彈出視窗並不容易找到。 請將其他視窗最小化以找出該彈出視窗。
安裝
本節包含安裝 Az PowerShell 模組時的常見問題解決方案清單。
Az 和 AzureRM 共存
警告
我們不支援在 Windows PowerShell 5.1 中同時安裝 AzureRM 和 Az PowerShell 模組。
在需要在同一個 Windows 系統上安裝 AzureRM 和 Az PowerShell 模組的案例中:
- AzureRM 只能安裝在 Windows PowerShell 5.1 的目前用戶範圍中。
- 在 PowerShell 7.2 或更新版本中安裝 Az PowerShell 模組。
警告
自 2024 年 2 月 29 日起,AzureRM PowerShell 模組已正式淘汰。 建議使用者從 AzureRM 移轉至 Az PowerShell 模組,以確保持續受到支援與更新。
雖然 AzureRM 模組可能仍可運作,但不再接受維護或支援,任何繼續使用均由使用者需自行決定並承擔風險。 如需轉換至 Az 模組的指導,請參閱我們的移轉資源。
Visual Studio
舊版 Visual Studio 可能會安裝 Azure PowerShell 作為 Azure 開發工作負載的一部分,這會安裝 AzureRM 模組。 Azure PowerShell 可以使用 Visual Studio 安裝程式進行移除,或在 [應用程式與功能] 中使用 [解除安裝]。 如果您已安裝 PowerShell 7.x,您可能需要手動安裝 Az PowerShell 模組。
Proxy 封鎖連線
如果 Install-Module
顯示錯誤表示無法連線到 PowerShell 資源庫,表示您可能是透過 Proxy 連線。 不同的作業系統和網路環境在設定全系統的 Proxy 時會有不同的需求。 請連絡系統管理員以取得您的 Proxy 設定,並詢問如何為您的作業系統進行其設定。
PowerShell 本身不一定會設定為自動使用此 Proxy。 使用 PowerShell 5.1 和更新版本,並使用下列命令,將 PowerShell 工作階段設定為使用 Proxy:
$webClient = New-Object -TypeName System.Net.WebClient
$webClient.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
如果您的作業系統認證已正確設定,此設定將會透過 Proxy 路由傳送 PowerShell 要求。 若要在工作階段之間保存此設定,請將命令新增至您的 PowerShell 設定檔。
若要安裝此套件,您的 Proxy 必須允許與 www.powershellgallery.com 進行 HTTPS 連線。
未將物件參考設定為物件的執行個體
「物件參考未設定為物件的執行個體」訊息表示您參考的物件為 Null 或不存在的 Azure 資源,或您沒有存取權限。
$resourceId = '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<resource-group-name>/providers/Microsoft.Web/sites/<webapp-name>/privateEndpointConnections/<endpoint-name>'
Get-AzPrivateEndpointConnection -ResourceId $resourceId
Get-AzPrivateEndpointConnection: Object reference not set to an instance of an object.
您可以使用 Get-AzResource
Cmdlet 來驗證指定的 Azure 資源是否存在。
Get-AzResource -ResourceId $resourceId
AzAD Cmdlet 的權限問題
Az PowerShell 模組使用 Microsoft Graph API。 使用 Az PowerShell 模組在 Azure 中管理資源所需的權限與從 Azure 入口網站或任何其他 Azure 命令行工具執行相同工作相同。 若是有關權限的特定問題,請參閱 Microsoft Graph 權限參考。
Microsoft Graph 查詢參數
Az.Resources 下的 AzAd Cmdlet 現在支援 查詢參數和搜尋查詢參數。 如需語法的詳細資訊,請參閱先前的參考連結。
Get-AzAdGroupMember 不會傳回服務主體
由於目前圖形 API 的限制,Az 7.x 中的 AzAdGroupMember 不會傳回服務主體。 因應措施為 Invoke-AzRestMethod 可搭配 Microsoft Graph API 的搶鮮版 (Beta) 使用。
下列範例需要 Az PowerShell 模組。 以您的組名取代 myGroupName
的第一行。
$Group = Get-AzADGroup -DisplayName myGroupName
((Invoke-AzRestMethod -Uri "https://graph.microsoft.com/beta/groups/$($Group.id)/members").Content |
ConvertFrom-Json).value |
Select-Object -Property DisplayName, Id, @{label='OdataType';expression={$_.'@odata.type'}}
找到命令但無法載入
當您嘗試執行任何 Az PowerShell 命令時,PowerShell 會傳回下列訊息。
Connect-AzAccount: The 'Connect-AzAccount' command was found in the module 'Az.Accounts', but the module could not be loaded. For more information, run 'Import-Module Az.Accounts'.
當您將 Az 和 AzureRM PowerShell 模組安裝在相同的 Windows 系統上,且這兩個模組存在於相同 PowerShell 版本的 $env:PSModulePath 中時,則會顯示此訊息。
重要
當 AzureRM 安裝在 Windows PowerShell 的 AllUsers
範圍內時,此模組會安裝在屬於 PowerShell 7 的 $env:PSModulePath
一部分的位置。 由於 AzureRM 和 Az PowerShell 模組之間會發生衝突,因此無法支援。
Az 和 AzureRM 可於相同的 Windows 系統上共存,但僅可將 AzureRM 安裝於 Windows PowerShell 的 CurrentUser
範圍,而 Az 需安裝於 PowerShell 7 中。 如需詳細資訊,請參閱安裝 Az PowerShell 模組。
警告
自 2024 年 2 月 29 日起,AzureRM PowerShell 模組已正式淘汰。 建議使用者從 AzureRM 移轉至 Az PowerShell 模組,以確保持續受到支援與更新。
雖然 AzureRM 模組可能仍可運作,但不再接受維護或支援,任何繼續使用均由使用者需自行決定並承擔風險。 如需轉換至 Az 模組的指導,請參閱我們的移轉資源。
在 MacOS 上,KeyChain 授權失敗時傳回錯誤
在 MacOS 上執行 Azure PowerShell 時,當您嘗試透過 PowerShell 工作階段登入 Azure 帳戶時,可能會遇到錯誤訊息。
DeviceCodeCredential authentication failed: Persistence check failed. Reason: KeyChain authorization/authentication failed. .Error code: -25293. OS error code -25293.
此問題的因應措施為執行下列命令,來停用在工作階段間儲存認證。 不過,在進行這項變更後,您每次啟動新的 PowerShell 工作階段都必須執行 Connect-AzAccount
。
Disable-AzContextAutosave
此網站的連線不安全
當您的預設瀏覽器為 Microsoft Edge 時,則在嘗試使用 Connect-AzAccount
以互動方式登入 Azure 時,可能會發生下列錯誤:「此網站的連線不安全」。若要解決此問題,請使用 Microsoft Edge 造訪 edge://net-internals/#hsts。 在 [刪除網域安全性原則] 底下新增 localhost
,然後按一下 [刪除]。
服務主體 IdentifierUri 已驗證網域錯誤
錯誤:在執行 New-AzADServicePrincipal
或 New-AzADApplication
時,IdentifierUris 屬性的值必須使用組織已驗證網域,或其子網域已顯示。
由於 Microsoft Entra 中斷性變更需要單一租用戶應用程式中的 AppId Uri 才能要求使用預設配置或已驗證的網域,因此您必須將 Az.Resources 模組升級至 4.1.0 或更新版本,才能繼續使用 New-AzADServicePrincipal
或 New-AzADApplication
Cmdlet。
您也可以升級至 Az PowerShell 模組版本 6.0 或更新版本。
時間軸
此需求於 2021 年 10 月 15 日生效。
受影響的版本
下列 Azure PowerShell 版本會受到 AzureAD 中斷性變更的影響:
- Az.Resources PowerShell 模組版本 3.5.1 預覽版或更舊版本。
- Azure PowerShell 版本 5.9.0 或更舊版本。
如果您在升級之後仍遇到問題,歡迎隨時提出問題。
因應措施
如果您無法升級至之前所述的 PowerShell 模組,您可以在建立服務主體時遵循下列步驟:
- 必要時,使用 Microsoft Entra 系統管理中心新增您的自訂網域名稱
- 透過已接受的 IdentifierUri 建立應用程式
- 參考此應用程式建立服務主體
其他問題
如果您在使用 Azure PowerShell 時遇到本文未列出的產品問題,或需要進一步協助,請在 GitHub 上提出問題。