Intuneの構成設定をMicrosoft Graphで確認する記事を見たので自分でも試してみました。
また、運用での活用方法も(すごく簡単ですが)考えてみました。
Intuneの構成設定をMicrosoft Graphで取得する
Intuneの設定内容は、管理センターの他にMicrosoft Graph*1でも確認できます。
Microsoft GraphはSDKが公開されています。 今回はPowershell SDKを使用しました。
Powershell SDKの使用準備
Powershellを開いてSDKをインストールします。
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned Install-Module Microsoft.Graph
Set-ExecutionPolicy
実行時に「実行ポリシーの変更」について聞かれますがYを入力Install-Module
実行時に「信頼されていないリポジトリ」について聞かれますがYを入力
Microsoft Graphに接続する
下記を実行してMicrosoft Graphに接続します。
Connect-MgGraph -Scopes "DeviceManagementConfiguration.Read.All"
なお、-Scopre
ではこのセッションで必要な権限範囲を設定しています。
今回はIntuneの構成設定の読み取りしかしないためDeviceManagementConfiguration.Read.All
を指定しています。
参考:実行スコープ
Intuneに関連する実行スコープは下記のとおりです。
スコープ名 | 範囲 | 操作 |
---|---|---|
DeviceManagementApps.Read.All | Microsoft Intune によって管理されているアプリのプロパティ、グループの割り当て、アプリの状態、アプリ構成、アプリ保護ポリシー | 読み取り |
DeviceManagementApps.ReadWrite.All | Microsoft Intune によって管理されているアプリのプロパティ、グループの割り当て、アプリの状態、アプリ構成、アプリ保護ポリシー | 読み書き |
DeviceManagementConfiguration.Read.All | Microsoft Intune で管理されるデバイス構成とデバイス コンプライアンス ポリシーのプロパティとグループへの割り当て | 読み取り |
DeviceManagementConfiguration.ReadWrite.All | Microsoft Intune で管理されるデバイス構成とデバイス コンプライアンス ポリシーのプロパティとグループへの割り当て | 読み書き |
DeviceManagementManagedDevices.PrivilegedOperations.All | デバイスのワイプや Microsoft Intune によって管理されているデバイスでのパスコードのリセットなどのリモートの影響の大きいアクションをアプリで実行できる | 実行 |
DeviceManagementManagedDevices.Read.All | Microsoft Intune によって管理されているデバイスのプロパティ | 読み取り |
DeviceManagementManagedDevices.ReadWrite.All | Microsoft Intune によって管理されているデバイスのプロパティ | 読み書き (デバイスの所有者でリモート ワイプやパスワード リセットなどの影響の大きい操作は不可) |
DeviceManagementRBAC.Read.All | Microsoft Intune Role-Based アクセス制御 (RBAC) 設定に関連するプロパティ | 読み取り |
DeviceManagementRBAC.ReadWrite.All | Microsoft Intune Role-Based アクセス制御 (RBAC) 設定に関連するプロパティ | 読み書き |
DeviceManagementServiceConfig.Read.All | デバイス登録やサード パーティのサービス接続構成など、Microsoft Intune サービスのプロパティ | 読み取り |
DeviceManagementServiceConfig.ReadWrite.All | デバイス登録やサード パーティのサービス接続構成などの Microsoft Intune サービス プロパティ | 読み書き |
Intune以外の実行スコープは下記リンクから確認できます。
Microsoft Graph のアクセス許可のリファレンス - Microsoft Graph | Microsoft Learn
構成設定を確認するコマンドを実行する
構成設定を確認するコマンドは下記です。
Get-MgDeviceManagementDeviceConfiguration [実行例] Id CreatedDateTime Description DisplayName LastModifiedDateTime Version -- --------------- ----------- ----------- -------------------- ------- 95a15d20-07f2-492d-bdfd-1edd64466992 2023/05/04 5:35:32 01_Windowsの各種制限 2024/03/08 22:02:00 4 527af074-e759-4ca2-9a21-68896c7d5acc 2024/03/08 13:12:19 06_MDEオンボード 2024/03/08 13:12:19 1 7387114e-7482-40bc-9731-e54bab2ba19f 2023/05/04 9:34:16 test 2023/05/04 9:34:16 1
なお、コマンドを実行したテナントの構成設定は下図のとおりです。
コマンドを実行して下記のことがわかりました。
- 構成設定だけでなく更新リングの設定も出てくる
- 構成設定の内ポリシーの種類が「設定カタログ」のものは出てこない(原因不明)
取得した構成設定の内容を確認する
「01_Windowsの各種制限」というポリシーの内容を確認して、出力形式を見てみます。
Get-MgDeviceManagementDeviceConfiguration -DeviceConfigurationId 95a15d20-07f2-492d-bdfd-1edd64466992 | ConvertTo-Json
-DeviceConfigurationId
オプションを指定して特定のIDのポリシーを指定- 実行結果を
| ConvertTo-Json
でJson形式に変更
実行結果は下記のとおりです。(※結果のインデントの幅が大きかったため調整しています。)
[ { "Assignments": null, "CreatedDateTime": "\/Date(1683178532019)\/", "Description": null, "DeviceSettingStateSummaries": null, "DeviceStatusOverview": { "ConfigurationVersion": null, "ErrorCount": null, "FailedCount": null, "Id": null, "LastUpdateDateTime": null, "NotApplicableCount": null, "PendingCount": null, "SuccessCount": null }, "DeviceStatuses": null, "DisplayName": "01_Windowsの各種制限", "Id": "95a15d20-07f2-492d-bdfd-1edd64466992", "LastModifiedDateTime": "\/Date(1709935320808)\/", "UserStatusOverview": { "ConfigurationVersion": null, "ErrorCount": null, "FailedCount": null, "Id": null, "LastUpdateDateTime": null, "NotApplicableCount": null, "PendingCount": null, "SuccessCount": null }, "UserStatuses": null, "Version": 4, "AdditionalProperties": { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#deviceManagement/deviceConfigurations/$entity", "@odata.type": "#microsoft.graph.windows10GeneralConfiguration", "searchBlockDiacritics": false, "searchDisableAutoLanguageDetection": false, "searchDisableIndexingEncryptedItems": false, "searchEnableRemoteQueries": false, ... 以下省略 } ]
大まかに構造を捉えてみます。
項目名 | 内容 |
---|---|
Assignments | 割り当て設定 |
CreatedDateTime | 作成日時 |
Description | ポリシーの説明 |
DeviceSettingStateSummaries | デバイスのポリシーの適用状態のサマリ(ポリシー中で設定した各項目ごとの適用状態が出てくる)Get-MgDeviceManagementDeviceConfiguration -DeviceConfigurationId [ポリシーID] とすると詳しい内容がわかる |
DeviceStatusOverview | デバイスのポリシー適用状態サマリGet-MgDeviceManagementDeviceConfigurationDeviceStatusOverview -DeviceConfigurationId [ポリシーID] とすると詳しい内容がわかる |
DeviceStatuses | デバイスごとのポリシー適用状態一覧Get-MgDeviceManagementDeviceConfigurationUserStatusOverview -DeviceConfigurationId [ポリシーID] とすると詳しい内容がわかる |
DisplayName | ポリシーの名前 |
Id | ID |
LastModifiedDateTime | 最終更新日時 |
UserStatusOverview | ユーザごとのポリシー適用状態Get-MgDeviceManagementDeviceConfigurationUserStatusOverview -DeviceConfigurationId [ポリシーID] とすると詳しい内容がわかる |
UserStatuses | ユーザのポリシー適用状態サマリGet-MgDeviceManagementDeviceConfigurationUserStatus -DeviceConfigurationId [ポリシーID] とすると詳しい内容がわかる |
Version | バージョン(設定を更新するたびにインクリメント?) |
AdditionalProperties | 付加情報 -ここにポリシーの詳しい設定内容が書かれている- |
運用での活用を考える
Microsoft Graphを活用するとIntuneの構成設定を取得できることが分かりました。
もしこれを運用で活用するとすると下記のケースがあると思います。
- 取得した結果をGithubなどに保存して構成管理を行う
- Microsoft Graphには構成設定を作成するコマンドもあるので、設定をコマンドで効率的に行う
- 上2つを組み合わせてCI/CDみたいなことをする
今回は以上になります。ここまで見ていただきありがとうございました。
参考サイト
- 【 Get-MgDeviceManagementDeviceConfiguration 】コマンドレット――Microsoft Intuneに登録された構成プロファイルの情報を参照する:Windows PowerShell基本Tips(109) - @IT
- PowerShellでIntuneの情報を取得する(Microsoft Graph)
- Get-MgDeviceManagementDeviceConfiguration (Microsoft.Graph.DeviceManagement) | Microsoft Learn
- New-MgDeviceManagementDeviceConfiguration (Microsoft.Graph.DeviceManagement) | Microsoft Learn
更新履歴
- 2024/07/15:記事公開