Azure 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.0.6 LTS、PowerShell 7.1.3、またはそれ以降にインストールします。
注意事項
Az PowerShell モジュール で AzureRM PowerShell モジュールのすべての機能およびその他を利用できるようになったため、2024 年 2 月 29 日に AzureRM PowerShell モジュールは廃止になります。
サービスの中断を回避するために、2024 年 2 月 29 日までに、AzureRM PowerShell モジュールを使用するスクリプトを更新して、Az PowerShell モジュールを使用するようにしてください。 スクリプトを自動的に更新するには、 クイックスタート ガイドに従ってください。
Visual Studio
以前のバージョンの Visual Studio では、Azure 開発ワークロードの一部として Azure PowerShell がインストールされる場合があり、これにより AzureRM モジュールがインストールされます。 Azure PowerShell を削除するには、Visual Studio インストーラーを使用するか、[アプリと機能] の [アンインストール] を使用します。 PowerShell 7.x を既にインストールしている場合は、Azure 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 にインストールされている場合のみです。 詳細については、「Azure Az PowerShell モジュールをインストールする」を参照してください。
注意事項
Az PowerShell モジュール で AzureRM PowerShell モジュールのすべての機能およびその他を利用できるようになったため、2024 年 2 月 29 日に AzureRM PowerShell モジュールは廃止になります。
サービスの中断を回避するために、2024 年 2 月 29 日までに、AzureRM PowerShell モジュールを使用するスクリプトを更新して、Az PowerShell モジュールを使用するようにしてください。 スクリプトを自動的に更新するには、 クイックスタート ガイドに従ってください。
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
サービス プリンシパル IdentifierUri 検証済みドメイン エラー
New-AzADServicePrincipal
または New-AzADApplication
を実行すると、"identifierUris プロパティの値は、組織の検証済みドメインまたはそのサブドメインを使用する必要があります" というエラーが表示されます。
シングル テナント アプリケーションの AppId Uri で既定のスキームまたは検証済みドメインを使用する必要があることを要求する Azure Active Directory の破壊的変更によって、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 Active Directory ポータルを使用してカスタム ドメイン名を追加する
- 承認済みの IdentifierUri を使用してアプリケーションを作成する
- このアプリケーションを参照するサービス プリンシパルを作成する
その他の問題
この記事に記載されていない Azure PowerShell の製品に関する問題が発生した場合、またはさらに支援が必要な場合は、GitHub で問題を報告してください。