PowerShell でクエリを使用してマイクロソフト グラフ API クエリで /Any フィルターを使用する方法

PowerShell でクエリを使用してマイクロソフト グラフ API クエリで /Any フィルターを使用する方法 [ad_1]

ラムダ演算子が必要な場合がある理由

読者が、この記事に含まれる Graph API クエリの x:x の意味について質問しました。 グラフを使用するように Office 365 PowerShell スクリプトをアップグレードする.次のようなクエリでこの構成が表示されます。

特定のライセンスが割り当てられているアカウントのセットを検索します。この場合、Office 365 E3 が割り当てられたアカウントを探します (その SKU または製品識別子は常に 6fd2c87f-b296-42f0-b197-1e91e994b900です)。

https://graph.microsoft.com/beta/users?$filter=assignedLicenses/any(s:s/skuId eq 6fd2c87f-b296-42f0-b197-1e91e994b900)

テナントで Microsoft 365 グループのセットを検索します。

https://graph.microsoft.com/v1.0/groups?$filter=groupTypes/any(a:a eq 'unified')

テナント内のチームのセットを見つけます。

https://graph.microsoft.com/beta/groups?$filter=resourceProvisioningOptions/Any(x:x eq 'Team')

ご期待どおり、コマンドレットは パワーシェル用のマイクロソフトグラフSDK 基本的には Graph API 呼び出しのラッパーであり、これらのコマンドレットは同じ種類のフィルターを使用します。たとえば、Office 365 ライセンスを使用してアカウントを検索する方法を次に示します。 ゲット・Mgユーザー コマンドレット:

[array]$Users = Get-MgUser -Filter "assignedLicenses/any(x:x/skuId eq 6fd2c87f-b296-42f0-b197-1e91e994b900)" -all

ラムダ演算子

これらすべてのクエリで使用 オブジェクトをフィルタするラムダ演算子 複数値プロパティに適用される値を使用する。たとえば、割り当てられたライセンスに基づいてユーザを検索するクエリは、 割り当てられたライセンス Azure AD アカウントのプロパティでは、テナント内の一連の Teams の検出は、次のチェック リソースプロビジョニングオプション Microsoft 365 グループのプロパティを作成します。これらのプロパティは、単純な文字列や数値ではなく、複数の値または複数の値セットを保持します。

Microsoft は 2022 年 6 月 30 日に Azure AD コマンドレットをライセンス管理用に廃止し、これらのコマンドレットを含むスクリプトをアップグレードして PowerShell または Graph API 呼び出しの Microsoft Graph SDK のコマンドレットに置き換えることをテナントに強制しているため、ライセンス情報へのアクセスは説明する良い例です。これ Practical365.com 記事 SDK コマンドレットを使用するようにスクリプトをアップグレードする例を説明します。

の価値を見れば 割り当てられたライセンス アカウントのプロパティには、次のような表示が表示され、アカウントに 3 つのライセンスがあり、そのうちの 1 つは無効なサービス プランを持っています。

disabledPlans                          skuId
-------------                          -----
{33c4f319-9bdd-48d6-9c4d-410b750a4a5a} 6fd2c87f-b296-42f0-b197-1e91e994b900
{}                                     1f2f344a-700d-42c9-9427-5cea1d5d7ba6
{}                                     8c4ce438-32a7-4ac5-91a6-e22ae08d9c8b

それは明らかです 割り当てられたライセンス は、アカウントの表示名のような単一値プロパティよりも複雑なプロパティであり、いくつかの方法で取得できます。たとえば、Tony で始まる表示名を持つユーザーを検索するフィルターを使用したクエリを次に示します。

https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'Tony')

ここで PowerShell について説明しているので、フィルターでドル文字をエスケープする必要があることを覚えておいてください。上記の例を取ると、PowerShell で渡される方法を次に示します。

$Uri = "https://graph.microsoft.com/v1.0/users?`$filter=startswith(displayName,'Tony')"
[array]$Users = Invoke-WebRequest -Method GET -Uri -ContentType "application/json" -Headers $Headers | ConvertFrom-Json

クエリによって返されるデータは、 $Users 配列を使用し、他の PowerShell オブジェクトと同様に処理できます。

すべて使用する

ラムダ演算子に戻る OData は 2 つ (すべて) を定義します。 それはのように思えます すべての 演算子、 “ブール式をコレクションの各メンバに適用し、その式がコレクションのすべてのメンバに対して true の場合は true を返します ( それ以外の場合は false を返します ) 。" は使用されません。少なくとも、マイクロソフトのドキュメントには""はどのプロパティでもサポートされていません."

上記の例から見たように、任意の演算子が頻繁に使用されます。この演算子は"コレクションの各メンバーにブール式を繰り返し適用し、返します。 true 式が true 対して 任意のメンバー コレクションの場合、それ以外の場合は返します false.”

特定のライセンスが割り当てられたアカウントを検索するために使用されるフィルタを見ると、次のようになります。

filter=assignedLicenses/any(s:s/skuId eq 6fd2c87f-b296-42f0-b197-1e91e994b900)

コンポーネント部品の私の解釈(に基づいて マイクロソフトのドキュメント) のフィルタは次のとおりです。

  • 割り当てられたライセンス は、パラメーター、またはフィルターが適用されるプロパティです。プロパティには、値のコレクションまたはエンティティのコレクションを含めることができます。この場合、 割り当てられたライセンス アカウントのプロパティには、1 つ以上のライセンス エンティティのコレクションが含まれています。各ライセンスは、SkuId と無効にされたプランがライセンス保有者が利用できないもので構成されます。
  • s:sは、反復中にコレクションの現在の要素を保持する範囲変数です."興味深いのは、あなたが範囲変数に好きな名前を与えることができるということです。この場合、次の可能性があります。 ライセンス:ライセンス あるいは、さらに ゴミ:破片。 変数の名前にすぎません。
  • スクイド はサブパラム、つまり値です。チェックされるプロパティ内で。コレクション内に値が 1 つしかない場合 (チーム対応グループを確認する場合など)、サブパラメータを指定する必要はありません。の場合 割り当てられたライセンスのは、エンティティのコレクション内の SkuId と一致させるため、必要です。 割り当てられたライセンス 財産。
  • 6fd2c87f-b296-42f0-b197-1e91e994b900 は、項目と一致する値です。

私は開発者ではありません

このすべては、プロフェッショナルな開発者にとっては第 2 の性質ですが、操作を自動化するために PowerShell スクリプトを開発したいテナント管理者にとっては、それほど多くはありません。これにより、ラムダ修飾子が必要なタイミングを検出する方法について疑問が生じるようになりました。私は次の例を探す以外は素晴らしい答えを持っていません:

  • マイクロソフトのグラフ API ドキュメント。
  • 他の人が Graph API を使用した操作について説明するコードは、オンラインで投稿されます。

そして、それがうまくいくように見えるかもしれない何かを見つけたら、それを覚えておいてください グラフエクスプローラ は、組織内のライブ データに対してクエリをテストする優れた方法です。図 1 は、ライセンス情報のクエリの結果を示しています。

グラフ エクスプローラーでラムダ修飾子を使用したクエリの実行
図 1: グラフ エクスプローラーでラムダ修飾子を使用したクエリの実行

グラフの謎を探る

グラフ API に関するマイクロソフトのドキュメントに関する苦情の 1 つは、適切な PowerShell の例にほとんど注意を払わないという点です。グラフ SDK の開発者は、この状況が変わらなければならないことを理解しており、今後 1 年間で PowerShell のドキュメントを改善する予定であると述べています。JavaやC#のような言語がこれまで優先事項であったことは理解できますが、マイクロソフトはPowerShellコミュニティがグラフを受け入れ、助けを借りずにその謎(ラムダ修飾子のような)を学ぶことを期待することはできません。グラフSDKの開発者が約束を果たしていることを願いましょう!


テナント管理者が利用できる Office 365 データを利用する方法を学習します。 IT 担当者向け Office 365 電子書籍。私たちは物事がどのように機能するかを考え出すのが大好きです。

[ad_2]

未分類

Posted by admin