Graph X-ray toolを使ってIntuneのGraph呼び出しを確認する

# はじめに
Intuneの動作を自動化する為に、Graph APIというものを調べていました。
その際に、Graph X rayツールなる便利なツールを発見しましたので、使い方を簡単にまとめました。

## Graph API
Intuenのみならず、M365関連のサービスをプログラムから呼び出す方法を少し調べていくと、すべては[Graph API](https://learn.microsoft.com/ja-jp/graph/api/overview?view=graph-rest-1.0 "Graph API") というものを通じて呼び出しが可能であることに気が付きます。
いわゆるREST形式のAPIですね、M365サービスの操作はGraph WebサービスへGETやPOSTして、実現することができるようです。


## Graph Explorer
試しに呼び出すためのツールがGraph Explorerです。所定のリソースなどへGETやPOSTを実際に行って、その結果を取得したり、サービス側に反映したりすることができます。
とはいえ、一体世の中の詳しい人はどうやってこのサービスの呼び出し先がこのURIであることを知ることができるのか。。と疑問がわきます。MSのドキュメントに説明はあると思うのですが、必ずしも読みやすいものでもなくて、サービスとURIのマッピングを知ることは簡単ではないですね。


## Graph X-rayツール
ネットで探してみると、どうやらこのツールを使うことで、サービスをアクセスして操作する際のバックグラウンドでのgraph呼び出し内容を表示することができるようです。
まさに名前の通りGrpahの動作をX線で可視化しているツールのような動作です。


# Graph X rayツール使用例(Intune動作を確認する)


## Graph X rayツールインストール

こちらのページで確認すると、
https://graphxray.merill.net/

Chrome拡張機能、Edge拡張機能、ストアアプリの3種類があるようです。
Edgeの拡張機能を入れてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/ac3cb516-1773-3d48-4222-4ff3bf1c73ee.png)

[Microsoft Edge Add-on]
をクリックして、こちらの拡張機能をインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/4a71715b-a86f-1b12-1568-23e8a736e124.png)

利用方法ですが、
まずEdgeで、IntuneのAdmin centerを開きます。
その後、Egdeのメニューで、その他のツール-開発者ツールを開きます。

ツール上部の + をクリックして、Graph X-Rayをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/3c473bbe-4d14-8dc2-635a-189c1ba9617d.png)

こんな画面が表示されたら、準備完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/06f88ccd-72f7-6503-d9c7-05bd635e6aeb.png)



## Intuneのデバイス情報の取得

Intune Admin Centerでデバイスをクリックします。
すると、X-Rayのウインドウにこんな感じでPowerShellのコマンドレットが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/bf9cf704-a21c-235a-914c-089cc3783c7d.png)

また、途中にはgraph apiをGETしているURIの情報が表示されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/1da074c5-99dc-c171-cbe4-eec4827ae81b.png)

どうやらIntuen Admin CenterがアクセスしているURIを相当するPowerShell CmdletまたはURIの情報を表示してくれているようです。

## Intuneデバイスのプライマリユーザ変更

今度はGETではなく、POSTの実例です。
Windowsデバイスで、実際のデバイスをクリックして、プライマリユーザを変更してみましょう。

デバイスのプロパティで、Primary userを変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/d8dc5eef-363b-6b5d-7df1-ba1f132fda3b.png)

変更後のユーザを選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/1ee569e6-c501-4372-5b73-7d004c3992b2.png)

Saveを押してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/e41e51b0-8831-b5ce-f7cc-2f7dab5483fd.png)

X-Rayのウインドウには、このような表示がされました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/492e7b7d-c4d5-709f-b498-a6d971ba5630.png)

このURIをPOSTすれば、Primary Userの変更ができそうです。

Postするユーザ情報ですが、以下のようなデータを送付すればよさそうです。(言語をJavascriptに変更して発見)

{"@odata.id":"https://graph.microsoft.com/beta/users/<ユーザのGUID>"}

ではこのURI操作をGraph Explorerで実施して確認してみましょう。

現在のPrimary Userはこうなっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/ba696d20-fd70-1b19-5ac4-1b03655c4610.png)

Graph Explorerで以下のようにPOSTしてみます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/7facb2f8-13c7-17e4-05fc-88c30158087a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/dc2ed0c1-2112-5e08-0bfe-f4224ff85b6f.png)

成功したかな、特にエラーはなさそうです。

Intune側でデバイス情報のページをリロードしてみると、上のGUIDで指定したユーザに変更されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/0ffe3265-8387-daef-38ff-83b6926c486d.png)

Intuneで色々操作して、その際のGraph呼び出しをX-Rayツールで確認することで、やりたい自動化のGraph APIのヒントがかなり得られそうです。


# 参考リンク(英語)

https://youtu.be/6_aywwBWgr8?si=JolMkEomdS2f9Q5z

https://office365itpros.com/2022/05/23/graph-x-ray-powershell/