
かつて山市良と呼ばれたおじさんのブログ
セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ vol.104 検出/修復スクリプトの出力をMicrosoft Graphで取得する|はじめてのIntune(15)
2025年05月08日配信
2025年05月08日更新
執筆者:山内 和朗
前回(vol.103)、Windowsデバイスでサポートされる「修復」機能について深堀りしました。以前は「プロアクティブな修復」と呼ばれていたこの機能は、サポートの問題がユーザーに知られる前に、検出スクリプトで検出し、修復スクリプトで自動修正し、望ましい状態を維持するというのが本来の機能です。そして、スクリプトの出力結果をエクスポート機能を利用して取得できることを示しました。
前回説明したように、Intuneの修復機能は、任意のPowerShellスクリプト(ただし、再起動コマンドは含めることはできない)を実行し、そのスクリプトの出力結果をエクスポート機能を利用して取得できることを示しました。そして、その動作の理解を手助けする、3つの簡単な検出スクリプト用のサンプルスクリプトを紹介しました。検出スクリプトの出力はエクスポートしたCSVファイルの「PreRemediationDetectionScriptOutput」列、エラー出力は「PreRemediationDetectionScriptError」列、修復スクリプトの出力は「PostRemediationDetectionScriptOutput」列、エラー出力は「PostRemediationDetectionScriptError」列で確認できます。
画面1 検出スクリプトの3つのサンプルの検出の状態と、エクスポート機能で取得できるスクリプト出力
修復機能で実行した検出スクリプトと修復スクリプトのスクリプト出力を取得する方法としては、Microsoft Intune管理センターのエクスポート機能を利用する以外に、Microsoft Graph REST APIやPowerShellのMicrosoft Graph.Bataモジュールを使用する方法があります。どちらもベータ版であるため、使用には注意が必要です(機能の変更や削除、コマンドレット名の変更の可能性があります)。
Microsoft Graph REST APIを使用する場合は、デバイス管理(DeviceManagement) APIの「deviceHealthScript」のリソースで、特定のスクリプト(スクリプトID)の「deviceRunStates」を取得します。この情報にアクセスするには、以下のAPIアクセス許可が必要です。
deviceHealthScript リソースの種類|Microsoft Graph(Microsoft Learn)
「Graph Explorer」(https://developer.microsoft.com/)を使用すると、APIアクセス許可の付与を含め、Microsoft Graph REST APIによる情報の取得を簡単に試すことができます(画面2)。
画面2 Microsoft Graph APIでPowerShellスクリプトの出力を取得する(画面は、Graph Explorerを使用)
PowerShellのMicrosoft Graph.Bataモジュールを使用する場合は、Get-MgBetaDeviceManagementDeviceHealthScriptコマンドレットでスクリプト一覧(スクリプトID)を取得し、Get-MgBetaDeviceManagementDeviceHealthScriptDeviceRunStateコマンドレットでスクリプト出力を取得できます。
Get-MgBetaDeviceManagementDeviceHealthScript|Microsoft Graph(Microsoft Learn)
Get-MgBetaDeviceManagementDeviceHealthScriptDeviceRunState|Microsoft Graph(Microsoft Learn)
手元(管理元端末)のPowerShell環境にMicrosoft.GraphやMicrosoft.Graph.Betaをまだインストールしていない場合は、次のコマンドラインを実行してインストールします。
PS: C:¥> Install-Module Microsoft.Graph -Repository PSGallery -Force PS: C:¥> Install-Module Microsoft.Graph.Beta -Repository PSGallery -Force |
Microsoft Graphにスコープを指定して接続し、スクリプトの一覧と、スクリプトの実行状態を確認します(画面3)。
PS: C:¥> Connect-MgGraph -Scopes "DeviceManagementConfiguration.Read.All","DeviceManagementApps.Read.All","DeviceManagementManagedDevices.Read.All" PS: C:¥> Get-MgBetaDeviceManagementDeviceHealthScriptDeviceRunState -DeviceHealthScriptId {スクリプトのId} |
画面3 Microsoft.Graph.Bataモジュールのコマンドレットを使用して、スクリプト出力を取得
今回、Microsoft Graphの使用方法やAPIアクセス許可については詳しく説明していませんが、それについてはこの連載の以下の記事を参考にしてください。
vol.58 はじめてのMicrosoft Graph|Azure&Entra IDスクリプト大作戦(5)
vol.59 いきなりのMicrosoft Graph REST API|Azure&Entra IDスクリプト大作戦(6)
はじめてのIntune(1)|...|(14)|(15)