Az PowerShell モジュールのトラブルシューティング

デバッグ ログの有効化

Azure Az PowerShell モジュールでの問題のトラブルシューティングで最初に行う必要がある手順の 1 つは、デバッグ ログを有効にすることです。

コマンドごとにデバッグ ログを有効にするには、Debug パラメーターを指定します。

Get-AzResource -Name 'DoesNotExist' -Debug

PowerShell セッション全体でデバッグ ログを有効にするには DebugPreference 変数の値を Continue に設定します。

$DebugPreference = 'Continue'

インストール

このセクションには、Azure 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 モジュールにアップグレードできない場合は、サービス プリンシパルを作成するときにこちらの手順を実行できます。

その他の問題

この記事に記載されていない Azure PowerShell の製品に関する問題が発生した場合、またはさらに支援が必要な場合は、GitHub で問題を報告してください