検索
連載

【 Get-MgServicePrincipal 】コマンドレット――Microsoft Entra ID(旧Azure AD)に登録されたサービスプリンシパルの情報を参照するWindows PowerShell基本Tips(101)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Get-MgServicePrincipal」コマンドレットを解説します。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は「Microsoft Entra ID」(旧称:Microsoft Azure Active Directory《Azure AD》)に登録された「サービスプリンシパル」の情報を参照する「Get-MgServicePrincipal」コマンドレットです。

Get-MgServicePrincipalコマンドレットとは?

 「Get-MgServicePrincipal」は、PowerShellを利用してMicrosoft Entra IDに登録されたサービスプリンシパルの情報を参照するためのコマンドレットです。サービスプリンシパルはアプリケーションが認証に使うIDで、サービスプリンシパルとして登録されたアプリケーションは「条件付きアクセス」によるアクセス制御を実施できます。

 通常、Microsoft Entra IDの「エンタープライズアプリケーション」に登録されたアプリケーションがサービスプリンシパルとして登録されます。しかし、「Microsoft Office 365」ように、明示的にエンタープライズアプリケーションに登録する必要のないアプリケーションでもサービスプリンシパルとして自動的に登録されている場合があります。

 このように、エンタープライズアプリケーションとサービスプリンシパルは必ずしも同じアプリケーションが登録されているわけでありません。そのため、サービスプリンシパルの一覧を参照する必要がある場合は、本連載第87回で解説したエンタープライズアプリケーションの一覧を参照する「Get-MgApplication」コマンドレットではなく、今回紹介するGet-MgServicePrincipalコマンドレットを利用します。

 なお、Get-MgServicePrincipalコマンドレットは、本連載第45回で解説した「Connect-MgGraph」コマンドレットで「Connect-MgGraph -Scopes "Application.Read.All"」と実行して、Microsoft Entra IDへの接続とアクセス許可を与えておくことが前提条件になります。

Get-MgServicePrincipalコマンドレットの書式

Get-MgServicePrincipal [オプション]


Get-MgServicePrincipalコマンドレットの主なオプション

オプション 意味
-All 全てのサービスプリンシパルを表示する。省略可能
-Property 特定のプロパティ(属性)を表示する。省略可能
-ConsistencyLevel ConsistencyLevelヘッダを定義し、Advanced Queryを有効化する。省略可能
-Count Get-MgServicePrincipalコマンドレットが返した値を変数として設定する。省略可能
-Filter 条件に合致するサービスプリンシパルを表示する。省略可能

全てのサービスプリンシパルを表示する

 Get-MgServicePrincipalコマンドレットをオプションなしでそのまま実行した場合は、最大で100個のサービスプリンシパルまでしか表示しません。Microsoft Entra IDに登録されている全てのサービスプリンシパルを表示させる場合は、「-All」オプションを付けて実行します(画面1)。

コマンドレット実行例

Get-MgServicePrincipal -All

ALT
画面1 Get-MgServicePrincipalコマンドレットに-Allオプションを指定して実行し、全てのサービスプリンシパルを表示した

AppId(アプリケーション名)を表示する

 Microsoft Entra IDの条件付きアクセスでアプリケーションを選択する場合は、アプリケーション名または「AppId」でアプリケーションを指定します。そのため、サービスプリンシパルに登録されたアプリケーション名をAppIdと一緒に参照したい場合は、「-Property」オプションを指定して実行します(画面2)。

コマンドレット実行例

Get-MgServicePrincipal -All -Property DisplayName, AppId

ALT
画面2 Get-MgServicePrincipalコマンドレットに-Allオプションを指定し、続けて-Propertyオプションで表示させたい属性として「表示名」(DisplayName)と「アプリケーションID」(AppId)」を指定した

特定の名前を持つサービスプリンシパルだけを表示する

 特定の名前を持つサービスプリンシパルだけを表示させたい場合は、「-Filter」オプションを使用します。この場合は、-Filterオプションに続けて「"属性 演算子 '値'"」のように条件を指定します(画面3)。

コマンドレット実行例

Get-MgServicePrincipal -ConsistencyLevel eventual -Count spCount -Filter "startsWith(DisplayName, 'Intune')"

ALT
画面2 -ConsistencyLevelオプションで「eventual」、-Countオプションで「spCount」を指定。この2つのオプションを指定することでAdvanced Queryが利用できるようになり、-Filterオプションで検索できるようになる。ここでは「"startsWith(DisplayName, 'Intune')"」と記述して、「DisplayName属性に『Intune』の文字列が含まれるサービスプリンシパル」という条件を指定している

 検索機能を利用する場合は、本連載第50回(【 Get-MgUser 】コマンドレット――Azure Active Directoryユーザーを参照する)でも登場した「Advanced Query」と呼ばれる機能を有効にする必要があるため、「-ConsistencyLevel」オプションと「-Count」オプションを併せて使用します。

筆者紹介

国井 傑(くにい すぐる)

株式会社エストディアン代表取締役。1997年からマイクロソフト認定トレーナーとして、Azure Active DirectoryやMicrosoft 365 Defenderなど、クラウドセキュリティを中心としたトレーニングを提供している。2007年からMicrosoft MVP for Enterprise Mobilityを連続して受賞。なお、テストで作成するユーザーアカウントには必ずサッカー選手の名前が登場するほどのサッカー好き。


Copyright © ITmedia, Inc. All Rights Reserved.