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

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

最初のリリースでも、グラフ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)。

グラフ X-Ray 拡張機能を使用したグラフコマンドの表示
図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 全体で発生する最も重要な変更を確実に理解できます。

未分類

Posted by admin