Microsoft Entra ID (旧 Azure AD) に登録された情報を PowerShell から確認する方法

# はじめに

Microsoft Entra ID (Azure AD) 上に登録されているユーザーの属性は、Azure AD の Powershell モジュールで確認することが可能です。
ですが、下記の情報にてアナウンスされている通り、今後は Microsoft Graph PowerShell への移行が推奨されています。

>Azure AD Powershell は、 2024 年 3 月 30 日に廃止される予定です。
>非推奨プランの詳細については、非推奨の 更新プログラムに関するページを参照してください。
>引き続き Microsoft Graph PowerShell に移行することをお勧めします。
>これは、Azure AD との対話に推奨されるモジュールです。
さらに、Microsoft Graph PowerShell を使用すると、すべての Microsoft Graph API にアクセスでき、PowerShell 7 で使用できます。
参考URL: https://learn.microsoft.com/ja-jp/powershell/azure/active-directory/overview?view=azureadps-2.0


そこで今回は、Microsoft Graph PowerShell を用いて Microsoft Entra ID に登録されている情報を確認する方法について調べてみました。

https://learn.microsoft.com/ja-jp/powershell/microsoftgraph/overview?view=graph-powershell-1.0

なお、以降の手順は Microsoft Entra ID にアクセス可能なオンプレミスの環境 (Windows Server) 上からの実行例です。

# 前提環境

前提条件である .NET Framework 4.7 と Powershell 5.1 以上であることを確認します。
Windows Server の場合は役割と機能の追加ウィザード、クライアント版の Windows の場合は [プログラムと機能] から確認が可能です。

https://learn.microsoft.com/ja-jp/powershell/microsoftgraph/installation?view=graph-powershell-1.0

https://dotnet.microsoft.com/ja-jp/download/dotnet-framework/net47

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/d5d7897a-d7d5-27ea-6f1e-9711ce7d3c3e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/4b1cfd0d-b959-2c6a-b798-a3c776884230.png)

前提条件を満足している場合は、管理者権限で Powershell を起動し、以下の通り実行します。

1. PowerShell の実行ポリシーを設定
```Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser```
2. Microsoft.Graph モジュールのインストール
インストールする対象に応じて、どちらかを実行 (片方だけでOK)
カレントユーザーの領域にインストールする場合:
```Install-Module Microsoft.Graph -Scope CurrentUser```
コンピューターのすべてのユーザーがアクセスできる領域にインストールする場合 
(管理者権限が必要)
```Install-Module Microsoft.Graph -Scope AllUsers```
https://www.powershellgallery.com/packages/Microsoft.Graph/2.6.1
3. 実行後、NuGet プロバイダーのインストールやリポジトリの信頼に関するプロンプトが表示されるため、"Y" を押下して進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/5c09861e-80a7-eec7-6247-0f6daceb9dab.png)
4. インストール状況の確認のため、以下のコマンドを実行します。
```Get-InstalledModule Microsoft.Graph```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/e54842e5-f2f8-c4fc-ae0a-0686fc9e7ee7.png)

# 動作確認

MgGraph への接続に、権限が必要となるため下記のコマンドを実行。
```Connect-MgGraph -Scopes "User.Read.All","Group.ReadWrite.All"```

サインイン画面が表示されることを確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/8dc4b1c5-eb68-4f4f-91b6-c0eec2a233e3.png)

認証ダイアログにテナントの管理者の認証情報を入力後、以下の画面は [承諾] をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/368fe0b1-78d7-772f-8cb3-ba3f18e1dc34.png)

なお、サインイン時下記が表示される場合は、インターネットオプションの設定の更新が有効な場合があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/7986a877-c6ca-b190-e8bc-03ebafe5bfe7.png)

[インターネットオプション]［セキュリティ］タブの　[レベルのカスタマイズ] から
[スクリプト化されたウィンドウを使って情報の入力を求めることを Web サイトに許可する] を [有効にする] に更新し、回避可能かお試しください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/2b42e908-dc1d-4684-dd0f-464f09defea3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/32107681-e7e4-a94d-e25a-69eef203ffac.png)

サインインと承諾後、以下の表示が確認出来たら対象のテナントの情報を取得する準備は完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/411d3a70-1e53-2320-7b99-d351d013a674.png)


以下の方法について確認してみます。
* テナントに登録されている全ユーザーの情報取得
* 特定のユーザーの情報のみすべて取得
* 特定のユーザーの特定の情報のみ取得

以降は、実行したコマンドの実行結果の一例になります。
Microsoft Entra ID (Azure AD) 環境上にあらかじめテスト用のユーザーを登録して実験しました。

## テナントに登録されている全ユーザーの情報取得
```Get-MgUser```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/10de1750-49a9-7346-241f-818aeae5311c.png)

## 特定のユーザーの情報のみすべて取得

```Get-MgUser -UserId <User ID> |fl```
※ <User ID> は Get-MgUser の結果から特定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/1f1d94d3-93dd-8afc-053d-d5c65d85efdd.png)

## 特定のユーザーの特定の情報のみ取得

```Get-MgUser -UserId <User ID> | select DisplayName, UserPrincipalName, ProxyAddresses, OnPremisesImmutableId, onPremisesSyncEnabled```
※ <User ID> は Get-MgUser の結果から特定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561718/20701e08-73a5-5f57-3e84-75649b9f5570.png)



# サインアウト方法

```Disconnect-MgGraph``` でサインアウト可能です。
再度接続したい場合は、```Connect-MgGraph -Scopes "User.Read.All","Group.ReadWrite.All"``` の実行が必要です。