X

グラフ X-Ray ツールが PowerShell 開発者によるグラフの習得に役立つ

グラフ X-Ray ツールが PowerShell 開発者によるグラフの習得に役立つ | Microsoft 365

最初のリリースでも、グラフX線はその価値を証明しています

マイクロソフトが Exchange Server 2007 の管理ツールを PowerShell を中心に構築することを決定したとき、管理者が PowerShell に慣れるまでには時間がかかることに気付きました。マイクロソフトは、Exchange 管理コンソール (EMC) にコマンドレット ログ機能を使用して、管理者が新しいメールボックスの作成など、さまざまな操作の実行に使用される PowerShell コードを表示できるようにしました。コマンドレット ログ記録は、管理者にスクリプトを構築するためのプロトタイプ コードを提供し、Microsoft サーバー製品で私が遭遇した中で最高の学習ツールです。

ロール オンに 16 年が経過し、コマンドレットのログ記録は最新の Exchange 管理センター (EAC) に存在しません。私を含む多くの人々が、この欠陥についてマイクロソフトに嘆いています。1 つの対応策は、EAC が PowerShell 上に構築されなくなったため、管理者がコピーして再利用できるように PowerShell コードを生成して表示することが非常に困難になっていることです。それは非常に残念です。

このすべてが私を新しいブラウザ拡張機能に導きます グラフX線.マイクロソフトの従業員によって作成されたが、正式な製品ではない Graph X-Ray は、Azure AD 管理センターや Intune 管理センターなどのコンソールでアクションを実行するために実行されるグラフ API コマンドを表示します。これらのコンソールのすべてのアクションが Graph API に依存するわけではありませんが、ユーザー、グループ、デバイス管理などの重要な領域では、これを興味深い機能にするのに十分です。

生のグラフまたはグラフ SDK

Microsoft 365 のコードを開発している人は誰でも、C# や JavaScript などのコンパイル済み言語を使用している場合でも、PowerShell スクリプトを記述している場合でも、グラフ X 線から価値を得ることができます。PowerShell でグラフ API を使用すると、通常、特にコードで複数のオブジェクトを処理する必要がある場合に、スクリプトの実行速度が向上します。スクリプターは、”生の API 呼び出し” を含めるか、Microsoft Graph PowerShell SDK のコマンドレットを使用するかを選択できます。スクリプト テナント構成レポートを作成するには は、生のAPI呼び出しを使用する良い例です。 Office 365 ライセンス レポートを生成するスクリプト は SDK コマンドレットを使用します。どちらの場合も、Graph API クエリがどのように形成され、実行されるかを理解する必要があり、Graph X-Ray 拡張機能がその価値を証明しています。

削除された Microsoft 365 グループの復元

削除された Microsoft 365 グループを復元する例を考えてみましょう。グループを復元する前に、論理的に削除された状態にあるグループを知る必要があります。グループは削除後 30 日間、論理的に削除された状態のままになり、管理者は Microsoft 365 および Azure AD 管理センターのオプションを使用してグループを復元できます。30 日間の保持期間が経過すると、Azure AD によってグループは完全に削除され、回復不能になります。

大規模なテナントでは、Microsoft 365 グループの有効期限ポリシーによって削除された非アクティブなグループを含む、多くのグループが完全な削除を待っている可能性があります。ザ Get-UnifiedGroup コマンドレットは、次のようなコマンドを使用して、論理的に削除されたグループの一覧を生成できます。

Get-UnifiedGroup -ResultSize Unlimited -IncludeSoftDeletedGroups:$True | ? {$_.WhenSoftDeleted -ne $Null} | Sort WhenSoftDeleted | Format-Table DisplayName, PrimarySmtpAddress, WhenSoftDeleted

コマンドレットは機能しますが、低速です。物事をスピードアップするために、私は Get-MgDirectoryDeletedItem SDK コマンドレット。コマンドレットは、削除されたユーザーアカウントを一覧表示するときに機能しますが、何をしても、削除されたグループのリストを返す方法を見つけることができませんでした。

グラフX線の使用

私はのためのグラフX線拡張機能をダウンロードしました エッジブラウザアドオン (Chrome と Microsoft Store アプリでは、他のバージョンも利用できます)。アドオンをロードするために、Edgeで開発者ツールオプションを開き、Graph X-Rayを選択しました。ブラウザーで新しいブレードが開き、Azure AD 管理センターで実行されるアクションに使用されるグラフ API コマンドが表示されます (図 1)。

図1:グラフX線拡張機能を使用したグラフコマンドの表示

これはまさにMVPリリースであることを強調することが重要です。物事は決して完璧ではありませんが、グラフX線が非常に役立つようにするのに十分な価値が存在します。たとえば、Azure AD 管理センターに削除されたグループが一覧表示されたときに報告されるコマンドは次のとおりです。

Get-MgDirectoryDeletedItem -DirectoryObjectId $directoryObjectId -Property "id,displayName,mailEnabled,securityEnabled,groupTypes,onPremisesSyncEnabled,deletedDateTime,isAssignableToRole" -Sort "displayName%20asc" -Top 20

これは問題ありませんが、どこにも入力方法を教えてくれません $directoryObjectId 変数。より肯定的なことに、生のGraph APIクエリは削除されたグループを返すために必要な構造を示しており、その情報を使用してクエリを送信することができました。 Invoke-MgGraphRequest SDK コマンドレット (これは機能しました)。これは、 Invoke-MgGraphRequest コマンドレットは、SDK コマンドレットが使用できない (または機能しない) ときにスクリプトが生の Graph API クエリを実行できるようにするために存在します。.

削除されたグループを見つける方法について新たに見つかった知識を備えた私は、各グループが永久に削除される予定の時期を含め、論理的に削除されたグループのセットを報告するためにこのスクリプトをコーディングしました。

Connect-MgGraph
Select-MgProfile Beta
$uri = "https://graph.microsoft.com/beta/directory/deleteditems/microsoft.graph.group?`$select=id,displayName,groupTypes,deletedDateTime&`$orderBy=displayName%20asc&`$top=100"
[array]$Groups = (Invoke-MgGraphRequest -Uri $Uri).Value
If (!($Groups)) { write-Host "No deleted groups available for recovery" ; break }
$Report = [System.Collections.Generic.List[Object]]::new() # Create output file for report
$Now = Get-Date
ForEach ($Group in $Groups) {
     $PermanentRemovalDue = Get-Date($Group.deletedDateTime).AddDays(+30)
     $TimeTillRemoval = $PermanentRemovalDue - $Now
     $ReportLine = [PSCustomObject]@{ 
          Group                = $Group.DisplayName
          Id                   = $Group.Id
          Deleted              = $Group.deletedDateTime
          PermanentDeleteOn    = Get-Date($PermanentRemovalDue) -format g
          DaysRemaining        = $TimeTillRemoval.Days        } 
       $Report.Add($ReportLine) 
}
$Report | Sort {$_.PermanentDeleteOn -as [datetime]} | Out-GridView

アドオンには、スクリプト (GraphXRaySession.PS1).ダウンロードしたスクリプトにはコマンドの重複がある可能性がありますが、後で使用するためにコマンドをコピーするこのような簡単な方法があるのは素晴らしいことです。

グラフX線からのより多くの洞察

論理的に削除されたグループの復元に進むと、Microsoftのドキュメント リストア – Mgディレクトリオブジェクト コマンドレットは、有用な例の点で悲惨なほど不十分です。削除されたグループの識別子をコマンドレットに渡そうとしましたが、失敗しました。

Restore-MgDirectoryObject -DirectoryObjectId $GroupId
Restore-MgDirectoryObject : Resource '2eea84f2-eda3-4a72-8054-5b52c063ee3a' does not exist or one of its queried reference-property objects are not present.

もう一度、Graph X-Ray を参照して、Azure AD 管理センターの[削除されたグループを復元する]オプションを実行したコマンドを調べました。Graph X-Ray によって報告される生の API は、次のような POST (更新) クエリです。

POST /directory/deleteditems/2eea84f2-eda3-4a72-8054-5b52c063ee3a/restore

このコマンドを使用して、 Invoke-MgGraphRequest コマンドレット:

$uri = “https://graph.microsoft.com/beta/directory/deleteditems/8783e3dd-66fc-4841-861d-49976f0617c0/restore”
Invoke-MgGraphRequest -Method Post -Uri $Uri

もっとお願いします!

マイクロソフトがすべてのMicrosoft 365管理コンソールで同様の洞察を提供することを願っています。実際のアクションを実行するために使用される Graph API コマンドを確認できることは、強力な学習支援です。マイクロソフトがGraphとGraph SDKの採用を真剣に推進しているのであれば、この種のツールに投資するよりも悪いことをする可能性があります。私は彼らがそうすることを願っています。


Graph API コマンドのような開発を最新の状態に保つには、 Office 365 for IT プロフェッショナル 電子ブック。毎月の更新により、サブスクライバーは Office 365 全体で発生する最も重要な変更を確実に理解できます。

admin: