Az PowerShell モジュールのトラブルシューティング
デバッグ ログの有効化
Az PowerShell モジュールでの問題のトラブルシューティングで最初に行う必要がある手順の 1 つは、デバッグ ログを有効にすることです。
コマンドごとにデバッグ ログを有効にするには、Debug パラメーターを指定します。
Get-AzResource -Name 'DoesNotExist' -Debug
PowerShell セッション全体でデバッグ ログを有効にするには DebugPreference 変数の値を Continue
に設定します。
$DebugPreference = 'Continue'
自動化シナリオでのアナウンス メッセージ
Azure PowerShell を使用して Azure に接続すると、返されるオブジェクトベースの出力がアナウンス メッセージによって変更されることを防ぐために、PowerShell の情報ストリームを使用してアナウンス メッセージが表示されます。 Microsoft は、アナウンス メッセージがお客様のエクスペリエンスに影響しないようにあらゆる努力を行ってきましたが、これらがご利用に影響を与える可能性のある自動化のシナリオがいくつか存在します。 問題が発生した場合、以下に示すシナリオでは情報ストリームを抑制することをお勧めします。
Connect-AzAccount -Subscription '<subscription name or id>' -InformationAction Ignore
Web アカウント マネージャー (WAM)
- 対話型のサインイン方法では WAM のウィンドウを開くことができず、エラー「ユーザーによって認証が取り消されました」が返されます。
- ユーザー名とパスワードまたはデバイス コードを使用してログインした後は、Azure PowerShell コマンドレットを実行できません。
- WAM ポップアップ ウィンドウには、[職場または学校アカウント] オプションは表示されません。
- 対話型のサインイン方法では、Windows PowerShell ISE コンソールで WAM ウィンドウを開くことができません。
これらの問題の回避策は、WAM を無効にすることです。
Update-AzConfig -EnableLoginByWam $false
- アカウントを選択するための WAM ポップアップ ウィンドウを見つけるのは容易ではありません。 ポップアップ ウィンドウを見つけるには、他のウィンドウを最小化します。
インストール
このセクションには、Az PowerShell モジュールをインストールするときの一般的な問題の解決方法の一覧が含まれています。
Az と AzureRM の共存
警告
Windows PowerShell 5.1 では、AzureRM と Az PowerShell の両方のモジュールを同時にインストールすることはサポートされていません。
AzureRM と Az PowerShell モジュールの両方を同じ Windows システムにインストールする必要がある場合は、次のようにします。
- AzureRM は、Windows PowerShell 5.1 の現在のユーザー スコープにのみインストールする必要があります。
- Az PowerShell モジュールを PowerShell 7.2 以降にインストールします。
警告
AzureRM PowerShell モジュールは、2024 年 2 月 29 日に正式に非推奨になりました。 引き続きサポートを受け、更新を受け取れるようにするために、AzureRM から Az PowerShell モジュールに移行することをお勧めします。
AzureRM モジュールの機能は今後も使用できますが、メンテナンスやサポートは行われないため、引き続きの使用はユーザーの判断に委ねられ、リスクが発生することがあります。 Az モジュールへの移行に関するガイダンスについては、移行リソースを参照してください。
Visual Studio
以前のバージョンの Visual Studio では、Azure 開発ワークロードの一部として Azure PowerShell がインストールされる場合があり、これにより AzureRM モジュールがインストールされます。 Azure PowerShell を削除するには、Visual Studio インストーラーを使用するか、[アプリと機能] の [アンインストール] を使用します。 PowerShell 7.x を既にインストールしている場合は、Az PowerShell モジュールの手動インストールが必要な場合があります。
プロキシによる接続のブロック
PowerShell ギャラリーにアクセスできないというエラーが Install-Module
で発生した場合は、プロキシの内側にいる可能性があります。 システム全体のプロキシを構成するための要件は、オペレーティング システムとネットワーク環境によってさまざまに異なります。 プロキシ設定と、ご使用の環境での構成方法については、システム管理者にお問い合わせください。
PowerShell 自体は、このプロキシを自動的に使用するように構成されていない場合があります。 PowerShell 5.1 以降では、次のコマンドを使用して、プロキシを使用するように PowerShell セッションを構成します。
$webClient = New-Object -TypeName System.Net.WebClient
$webClient.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
オペレーティング システムの資格情報が正しく構成されている場合は、この構成により PowerShell 要求がプロキシ経由でルーティングされます。 この設定をセッション間で保持するには、このコマンドを PowerShell プロファイルに追加します。
パッケージをインストールするには、プロキシで 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
コマンドレットを使用して、指定した Azure リソースが存在することを確認できます。
Get-AzResource -ResourceId $resourceId
AzAD コマンドレットに関するアクセス許可の問題
Az PowerShell モジュールでは、Microsoft Graph API が使用されます。 Az PowerShell モジュールを使用して Azure でリソースを管理するには、Azure portal やその他の Azure コマンド ライン ツールから同じタスクを実行するのと同じアクセス許可が必要です。 アクセス許可についてご質問がある場合は、「Microsoft Graph のアクセス許可のリファレンス」を参照してください。
Microsoft Graph クエリ パラメーター
Az.Resources の AzAd コマンドレットで、クエリ パラメーターと検索クエリ パラメーターがサポートされるようになりました。 構文の詳細については、前に参照したリンクを参照してください。
Get-AzAdGroupMember はサービス プリンシパルを返しません
現在の Graph API の制限により、Az 7.x の Get-AzAdGroupMember ではサービス プリンシパルは返されません。 この回避策として、Microsoft Graph API のベータ版で Invoke-AzRestMethod を使用できます。
次の例では、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 モジュールをインストールする」を参照してください。
警告
AzureRM PowerShell モジュールは、2024 年 2 月 29 日に正式に非推奨になりました。 引き続きサポートを受け、更新を受け取れるようにするために、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 プロパティの値は、組織の検証済みドメインまたはそのサブドメインを使用する必要があります" というエラーが表示されます。
シングル テナント アプリケーションの AppId Uri で既定のスキームまたは検証済みドメインを使う必要があることを要求する Microsoft Entra の破壊的変更によって、New-AzADServicePrincipal
または New-AzADApplication
コマンドレットを引き続き使うには、Az.Resources モジュールをバージョン 4.1.0 以降にアップグレードする必要があります。
Az PowerShell モジュール バージョン 6.0 以上にアップグレードすることもできます。
タイムライン
この要件は、2021 年 10 月 15 日に有効になりました。
影響があるバージョン
次のバージョンの Azure PowerShell は、AzureAD の破壊的変更の影響を受けます。
- Az.Resources PowerShell モジュール バージョン 3.5.1 - プレビュー 以下。
- Az PowerShell モジュール バージョン 5.9.0 以下。
アップグレード後も問題が引き続き発生する場合は、お気軽にイシューを開いてください。
回避策
前述した PowerShell モジュールにアップグレードできない場合は、サービス プリンシパルを作成するときにこちらの手順を実行できます。
- 必要に応じて、Microsoft Entra 管理センターを使ってカスタム ドメイン名を追加します
- 承認済みの IdentifierUri を使用してアプリケーションを作成する
- このアプリケーションを参照するサービス プリンシパルを作成する
その他の問題
この記事に記載されていない Azure PowerShell の製品に関する問題が発生した場合、またはさらに支援が必要な場合は、GitHub で問題を報告してください。