次の方法で共有


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

デバッグログを有効化する

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

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

Get-AzResource -Name 'DoesNotExist' -Debug

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

$DebugPreference = 'Continue'

既知の問題: MAR からの Az モジュールのインストールが失敗する

PSResourceGet を使用して Microsoft Artifact Registry (MAR) から特定の Az PowerShell モジュールをインストールすると、次のようなエラーが発生する可能性があります。

Install-PSResource: Package(s) 'Az.Keyvault' could not be installed from repository 'MAR'.

一時的な回避策として、問題が解決されるまで、PowerShell ギャラリーなどの別のリポジトリからモジュールをインストールします。

詳細については、 ファイル パス名を比較して完全一致を判断するためのバグ修正を参照してください。

多要素認証 (MFA) のトラブルシューティング

対話型ログインエラー

リソースを作成、変更、または削除する Azure PowerShell コマンドレットの実行時にエラーが発生した場合、多要素認証 (MFA) を必要とする Microsoft Entra ID 条件付きアクセス ポリシーが原因で問題が発生する可能性があります。

これらのエラーは、通常、ポリシーで MFA が必要であるが、ログイン中に適用されない場合に発生します。

SharedTokenCacheCredential 認証を使用できない

次を使用すると、このエラーが表示されることがあります。

  • アリゾナ 州 PowerShell モジュール バージョン 14.2.0 以前
  • Az.Accounts PowerShell モジュール 5.1.1 以前
SharedTokenCacheCredential authentication unavailable. Token acquisition failed for user
someone@contoso.com. Ensure that you have authenticated with a developer tool that supports Azure
single sign on.

次のバージョン以降にアップグレードして、より有益なエラー メッセージとポリシーの詳細を受け取ります。

  • アリゾナ 州 PowerShell モジュール: バージョン 14.3.0 以降
  • Az.Accounts モジュール: バージョン 5.2.0 以降

リソースがポリシーによって禁止されました

このエラーは、新しいモジュール バージョン (Az 14.3.0 以降と Az.Accounts 5.2.0 以降) で発生します。この場合、特定の操作には条件付きアクセスで MFA が必要です。

Resource was disallowed by policy. Users must use MFA for Create operation.
Users must authenticate with multi-factor authentication to create or update resources.
Run the cmdlet below to authenticate interactively; additional parameters may be added as needed.
Connect-AzAccount -Tenant (Get-AzContext).Tenant.Id -ClaimsChallenge "<claims-challenge-token>"

解決オプション

  • サインイン時に MFA を適用するように Azure 管理者に依頼します。 これにより、セッションは追加の手順なしで条件付きアクセスの要件を満たすことができます。

  • サインイン時に MFA を適用できない場合は、 ClaimsChallenge パラメーターを使用して対話形式で認証します。

    Connect-AzAccount -Tenant (Get-AzContext).Tenant.Id -ClaimsChallenge "<claims-challenge-token>"
    

詳細については、「Azure およびその他の管理ポータルの必須多要素認証の計画」を参照してください。

ROPC エラー: 管理者によって行われた構成の変更が原因で

パスワードを使用して Azure にサインインするときは、リソース所有者パスワード資格情報 (ROPC) フローを使用します。 この認証方法は MFA をサポートしていません。 次に例を示します。

Connect-AzAccount -Credential $Credential

ユーザー アカウントに MFA が必要な場合、コマンドは次のエラーで失敗します。

Connect-AzAccount : UsernamePasswordCredential authentication failed: Response status code does not
indicate success: 400 (BadRequest). See the troubleshooting guide for more information
https://aka.ms/azsdk/net/identity/usernamepasswordcredential/troubleshoot

ソリューション: MFA と互換性のある認証方法を使用します。

テナント間の警告: テナントに対する認証が失敗しました

複数のテナントにアクセスでき、そのうちの 1 つに MFA が必要な場合、Azure PowerShell で次の警告が表示されることがあります。

WARNING: Unable to acquire token for tenant '00000000-0000-0000-0000-000000000000' with error
'Authentication failed against tenant 00000000-0000-0000-0000-000000000000. User interaction is
required. This may be due to the conditional access policy settings such as multi-factor
authentication (MFA). If you need to access subscriptions in that tenant, please rerun
'Connect-AzAccount' with additional parameter '-TenantId 00000000-0000-0000-0000-000000000000.'

Azure PowerShell は、ログイン時に最初に見つかったテナントによるサインインを試みます。 そのテナントが MFA を適用すると、認証が失敗する可能性があります。 この問題を回避するには、TenantId パラメーターを使用してターゲット テナントを明示的に指定します。

Connect-AzAccount -TenantId 00000000-0000-0000-0000-000000000000

これにより、正しいテナントに対して認証が試行され、MFA 関連のエラーが発生する可能性が低くなります。

自動化シナリオでのアナウンス メッセージ

Azure PowerShell を使用して Azure に接続すると、返されたオブジェクト ベースの出力が変更されないように、PowerShell の情報ストリームを使用してアナウンス メッセージが表示されます。 お知らせメッセージがエクスペリエンスに影響しないようにあらゆる努力をしてきましたが、使用に影響を与える可能性のある自動化シナリオがいくつかあります。 問題が発生した場合は、これらのシナリオでは情報ストリームを抑制することをお勧めします。

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 ポップアップ ウィンドウは簡単に見つかりません。 ポップアップ ウィンドウを見つけるには、他のウィンドウを最小化します。

Installation

このセクションには、Az PowerShell モジュールをインストールするときの一般的な問題の解決策の一覧が含まれています。

Az と AzureRM の共存

Warnung

Windows PowerShell 5.1 では、AzureRM と Az PowerShell の両方のモジュールを同時にインストールすることはサポートされていません。

AzureRM と Az PowerShell モジュールの両方を同じ Windows システムにインストールする必要がある場合は、次のようにします。

  • AzureRM は、Windows PowerShell 5.1 の現在のユーザー スコープにのみインストールする必要があります。
  • PowerShell 7.2 以降に Az PowerShell モジュールをインストールします。

Warnung

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 ではサービス プリンシパルは返されません。 回避策として、 Invoke-AzRestMethod は Microsoft Graph API のベータ版で使用できます。

次の例では、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 に存在する場合に発生します。

Important

AzureRM が Windows PowerShell の AllUsers スコープにインストールされると、PowerShell 7 の $env:PSModulePath の一部である場所にインストールされます。 これは、AzureRM と Az PowerShell モジュール間の競合が原因でサポートされていません。

Az と AzureRM の両方を同じ Windows システムに共存させることができるのは、AzureRM が Windows PowerShell の CurrentUser スコープにインストールされ、Az が PowerShell 7 にインストールされている場合のみです。 詳細については、「 Az PowerShell モジュールのインストール」を参照してください。

Warnung

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" というエラーが表示されます。

Microsoft Entra の破壊的変更により、 シングル テナント アプリケーションで AppId URI が既定のスキームまたは検証済みドメインの使用を要求 されるため、 az.Resources モジュールをバージョン 4.1.0 以降にアップグレードして、 New-AzADServicePrincipal または New-AzADApplication コマンドレットを引き続き使用する必要があります。

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 で問題を報告してください