Microsoft Graph PowerShell SDK コマンドレットの debug パラメーターを使用して、グラフ API 要求を公開する

Microsoft Graph PowerShell SDK コマンドレットの debug パラメーターを使用して、グラフ API 要求を公開する

Microsoft Graph PowerShell SDK コマンドレットをデバッグして、その機能に関する洞察を得る

Microsoft Graph Explorer の最近の機能強化に関する私の記事のコメントでは、グラフ エクスプローラーが実行する要求に対して PowerShell コード スニペットを生成するのを見るのは素晴らしいことですが、グラフ エクスプローラーが “ラウンド トリップ" をサポートしていればさらに良いでしょう。この場合、ユーザーは PowerShell コマンドをグラフ エクスプローラーに送信し、グラフ エクスプローラーはコマンドを解釈して適切なグラフ API 要求を生成できます。それは素晴らしいアイデアのように聞こえる。

私はMicrosoft Graphに取り組んでいる何人かの人々に連絡を取り、これが可能かどうかを確認しました。彼らは将来登場するそのような実装にコミットすることはできませんでしたが、私はMicrosoft Graph PowerShell SDKコマンドレットの素晴らしい機能について言われました。ラウンドトリップ要求には対処しませんが、特に SDK コマンドレットがユーザー、グループ、またはタスクに対してどのように機能するかを理解しようとしている場合は、それ以下を知っておくことは良いことです。 ライセンス管理.

一言で言えば、 –デバッグ パラメーターを指定すると、コマンドレットを実行するために実行されるグラフ API 要求を含め、コマンドレットの動作が正確にわかります。これは、これらのコマンドレットがどのように機能するかについての洞察を得て、Graph API 要求を活用する方法を理解するための優れた方法です。

デバッグパラメータを使用した実行

基本的な例を見てみましょう。 Get-MgUser テナント内のすべてのユーザー アカウントの詳細を取得するコマンドレット:

Get-MgUser -All -Debug -Filter "userType eq 'Member'"

コマンドレットが開始されると、対話型セッションであるかどうか、コマンドで使用可能なスコープ (アクセス許可) など、コマンドが実行されるコンテキストが表示されます。同じ情報を取得するには、 Get-MgContext コマンドレットですが、これは事前の知識として役立ちます。

図 1 では、Microsoft Graph PowerShell SDK で使用されるサービス プリンシパルに多くのアクセス許可があることがわかります。これは、 許可クリープは、異なるコマンドレットのテストのために、サービス プリンシパルが時間の経過と共にアクセス許可を獲得する傾向です。非常に多くのアクセス許可が存在するため、何をしているのかわからない限り、Microsoft Graph PowerShell SDK コマンドレットを対話的に使用することは悪い考えです。本番環境では、 証明書ベースの認証と登録済みの Azure AD アプリ をクリックして、使用可能なアクセス許可を制限します。

Microsoft Graph PowerShell SDK コマンドレットのデバッグ - 実行コンテキスト
図 1: Microsoft Graph PowerShell SDK コマンドレットのデバッグ – 実行コンテキスト

グラフ API 要求が表示されます。フィルターを満たす上位 100 個の一致する項目が検索されることがわかります。つまり、最初の 100 個の Azure AD メンバー アカウントを返します (図 2)。

Microsoft Graph PowerShell SDK コマンドレットのデバッグ - HTTP GET 要求
図 2: Microsoft Graph PowerShell SDK コマンドレットのデバッグ – HTTP GET 要求

ご覧のとおり、デバッグ セットを指定して実行すると、コマンドレットは頻繁に停止し、何が起こったかを読み、コマンドに問題があるかどうかを理解できます。

ページネーション

ページネーションは、PowerShell には存在しない概念です。コマンドレットによって取得される項目の数を制御する ResultSize パラメーターを持つコマンドレットもあれば、すべてを取得するようにコマンドに指示する All パラメーターを持つコマンドもあります。ザ Get-MgUser そして Get-MgGroup コマンドレットは、-All パラメーターをサポートするコマンドレットの例です。

グラフ API 要求では、何万ものアイテムを誤って検索する可能性のある要求によって引き起こされる問題を回避するために、データの取得 (通常は 100 または 200 アイテム) が制限されます。さらに多くの項目が存在する場合、アプリケーションは、使用可能なすべての項目をフェッチするまで、さらにデータのページを取得するために追加の要求を行う必要があります。アプリケーションは、nextlink (またはスキップトークン) リンクをたどることによってこれを行います。

図 3 に、データの次のページを取得するためにコマンドレットを実行するための nextlink を示します。この例では、 Get-MgUser フィルターのないコマンドレットなので、100 を超えるアカウントが使用可能であり、これがグラフが最初の 100 個のアカウントと次のリンクで応答する原因です。デバッグモードでは、各ページの後に一時停止して、グラフから取得した結果を表示できます。

Microsoft Graph PowerShell SDK コマンドレットのデバッグ - その他のデータへの次のリンク
図 3: Microsoft Graph PowerShell SDK コマンドレットのデバッグ – その他のデータへの次のリンク

管理者ツールボックスのもう一つのこと

デバッグパラメータやtなどの機能グラフX線ツールは、グラフAPIの仕組みを理解するのに役立ちます。グラフがどのように機能するかを知ることは非常に貴重です。コマンドレットがどのように機能するかについての洞察を持つことは、人々がより良いコードを開発し、うまくいけばバグを回避するのに役立ちます。少なくとも、それが理論です。いくつかの Microsoft Graph PowerShell SDK コマンドレットで Debug パラメーターを試して、ご意見をお聞かせください。


Microsoft 365 テナント管理者が利用できるデータを活用する方法、たとえば、Microsoft Graph PowerShell SDK コマンドレットをデバッグする方法などについて説明します。 Office 365 for IT プロフェッショナル 電子ブック。私たちは物事がどのように機能するかを理解するのが大好きです。

未分類

Posted by admin