この記事について
対象読者:Intune の組み込みコンプライアンス設定では要件を満たせず、独自の条件でデバイスを評価したい情シス・エンドポイント管理担当者
検証環境:Microsoft Intune 管理センター(2026 年 9 月時点)/Windows 10 以降
前提:デバイスが Intune に登録済みであること
今回は Windows デバイスを対象としています。
カスタム コンプライアンス ポリシーを使用するメリットは以下あたりがあります。
1. Microsoft の実装を待たずに、独自条件でコンプライアンスを判定できる
カスタム設定を使うと、Intune が組み込みのポリシー テンプレートにその設定を追加するのを待たずに、デバイス上で取得できる値をベースに柔軟にコンプライアンスを判定できます。「あの設定が組み込みに来たら対応しよう」と待つ必要がありません。
2. 条件付きアクセスと組み合わせて、実際にアクセスを止められる
カスタム コンプライアンス設定は、組み込みのコンプライアンス設定とまったく同じ方法で条件付きアクセスの判定に使えます。組み込み設定とカスタム設定は組み合わさって複合ルール セットを形成し、デバイスのコンプライアンス状態に等しく影響します。
3. ユーザー向けの修復メッセージを、設定ごと・言語ごとに出せる
JSON の RemediationStrings に、デバイスが非準拠になったときにポータル サイトへ表示されるメッセージを設定ごとに定義できます。MoreInfoUrl を使えば、ユーザーが自分で対処するための手順ページへ誘導することも可能です。日本語(ja_JP)を含む多言語に対応しているため、「なぜ弾かれたのか分からない」という問い合わせを減らせます。
4. 1 つのスクリプトで複数の設定をまとめて検出できる
1 つのコンプライアンス ポリシーがサポートする検出スクリプトは 1 本だけですが、1 本のスクリプトは複数の設定を検出できます。メーカー・BIOS バージョン・TPM の有無…といったチェックを 1 本にまとめられるので、スクリプトが乱立しません。
💡デバイス上でスクリプトから値が取れないもの(クラウド側にしか情報がない項目など)は対象外です。あくまで「デバイスで取得できる値」が判定材料になります。
全体の流れ
| # | 作業場所 | 内容 |
|---|---|---|
| 1 | ローカル PC | 検出スクリプト(PowerShell)の作成とテスト |
| 2 | Intune | 検出スクリプトのアップロード |
| 3 | ローカル PC | JSON ファイルの作成 |
| 4 | Intune | コンプライアンス ポリシーの作成(カスタム コンプライアンス) |
| 5 | Intune | 非準拠時のアクション・スコープ タグ・割り当ての設定 |
| 6 | Intune/端末 | 動作確認とレポートでの監視 |
【手順 1】 検出スクリプトを作成する
今回は「デバイスのメーカーが Dell かどうか」を判定するので、Win32_ComputerSystem の Manufacturer を取得します。
$WMI_ComputerSystem = Get-WmiObject -Class Win32_ComputerSystem
$hash = @{
Manufacturer = $WMI_ComputerSystem.Manufacturer
}
return $hash | ConvertTo-Json -Compress
実行結果(出力例):
{"Manufacturer":"Dell Inc."}
スクリプトを書くときの必須ルール
最終行は必ず return $hash | ConvertTo-Json -Compress にしてください。 Windows 用の PowerShell スクリプトは結果を 1 行に圧縮して出力する必要があり、この行がスクリプト ファイルの最後にあることが条件です。
ハッシュテーブルのキー名は、JSON の SettingName と完全に一致させます。 今回であれば両方 Manufacturer です。設定名は大文字と小文字が区別されるため、manufacturer では一致しません。
スクリプトの制限
コンプライアンス データを正常に返すには、次の制限内に収める必要があります。
| 項目 | 制限 |
|---|---|
| スクリプト サイズ | 1 MB 以下 |
| スクリプトの出力 | 1 MB 以下(かつ検出スクリプトの出力は 2048 文字に制限) |
| 実行時間(Windows) | 10 分以内 |
| 実行時間(Linux) | 5 分以内 |
⚠️ 本番展開の前に必ず実機でテストしてください。 Intune はスクリプトの構文やプログラミング エラーを検証しません。分離された環境で、想定どおりの値が返るか確認してから進めます。
【手順 2】 検出スクリプトを Intune にアップロードする
-
Microsoft Intune 管理センター にサインイン
-
[エンドポイント セキュリティ] → [デバイスのコンプライアンス] → [スクリプト] → [追加]
-
プラットフォーム(Windows 10 以降)を選択
-
[基本] で、後から識別しやすい 名前 を入力(例:
検出スクリプト - デバイスメーカー確認) -
[設定] の [検出スクリプト] に、手順 1 のスクリプトを貼り付け
-
Windows の場合のみ、次の動作を構成
-
ログオンした資格情報を使用してこのスクリプトを実行します:既定ではシステム コンテキストで実行されます。ログオン ユーザーのコンテキストで実行する場合のみ
はい(今回はいいえ) -
スクリプト署名チェックを適用する:署名済みスクリプトを必須にする場合は
はい(今回はいいえ) -
64 ビットの PowerShell ホストでスクリプトを実行する:既定では 32 ビット ホストで実行されます。64 ビットで動かしたい場合は
はい(今回はいいえ)
-
ログオンした資格情報を使用してこのスクリプトを実行します:既定ではシステム コンテキストで実行されます。ログオン ユーザーのコンテキストで実行する場合のみ
-
作成を完了すると、[スクリプト] 一覧に表示され、ポリシー作成時に選択できるようになります
【手順 3】 JSON ファイルを作成する
今回使用する JSON は次のとおりです。任意のテキスト エディターで作成し、.json として保存します(例:manufacturer.json)。
{
"Rules": [
{
"SettingName": "Manufacturer",
"Operator": "IsEquals",
"DataType": "String",
"Operand": "Dell Inc.",
"MoreInfoUrl": "https://learn.microsoft.com/mem/intune/protect/compliance-custom-json",
"RemediationStrings": [
{
"Language": "en_US",
"Title": "Unapproved device manufacturer",
"Description": "This device's manufacturer is not on the approved list. Please contact your IT administrator."
},
{
"Language": "ja_JP",
"Title": "承認されていないメーカーのデバイスです",
"Description": "このデバイスのメーカーは承認済みリストに含まれていません。IT 管理者にお問い合わせください。"
}
]
}
]
}
各キーの意味
| キー | 説明 |
|---|---|
SettingName |
コンプライアンス判定に使うカスタム設定の名前。大文字と小文字が区別されるため、検出スクリプトが返すキー名と完全一致させる |
Operator |
コンプライアンス ルールを作成するための演算子 |
DataType |
比較に使うデータ型 |
Operand |
演算子が操作する値(=準拠と見なす値) |
MoreInfoUrl |
非準拠時にユーザーが参照できる URL。準拠させるための手順ページへのリンクとしても使える |
RemediationStrings |
非準拠時にポータル サイトへ表示される情報。en_US は最低 1 つ必須で、他の言語は任意で追加できる |
⚠️
IsEqualsは完全一致です —Operandの値は実機で確認を
手順 1 のスクリプトを対象機種で実行し、実際に返ってきた文字列をそのままOperandに設定してください。
💡
MoreInfoUrlはエンドユーザー向けページに差し替えを
上記 JSON のMoreInfoUrlは管理者向けの Microsoft Learn ドキュメントを指しています。この URL は非準拠になったエンドユーザーが見るものなので、実運用では社内 FAQ やヘルプデスクの問い合わせページに差し替えることをおすすめします。
【手順 4】 コンプライアンス ポリシーを作成する
- Microsoft Intune 管理センター にサインイン
- [デバイス] → [デバイスの管理] の [コンプライアンス] → [ポリシーの作成]
- [プラットフォーム] で [Windows 10 以降]、[プロファイルの種類] で [Windows 10/11 コンプライアンス ポリシー]を選択し、[作成]
-
[基本] タブで、識別しやすい 名前 を入力(例:
Windows - 承認済みメーカーのみ準拠)。必要に応じて 説明 も入力 - [コンプライアンス設定] タブで [カスタム コンプライアンス] を展開し、[カスタム コンプライアンス] を [必要] に設定
- [検出スクリプトを選択する] で [クリックして選択] を選び、手順 2 でアップロードしたスクリプト名を入力 → [選択]
- [カスタム コンプライアンス設定で JSON ファイルをアップロードして検証する] でフォルダー アイコンを選択し、手順 3 の JSON ファイルを追加
- Intune が JSON を検証するまで待ちます。修正が必要な問題があれば画面に表示されます。検証が通ると、JSON のルールがテーブル形式で表示されるので、意図した内容になっているか確認してください
【手順 5】 アクション・スコープ タグ・割り当てを設定する
コンプライアンス非対応に対するアクション
[コンプライアンス違反に対するアクション] タブで、非準拠デバイスに自動適用するアクションを選択します。複数追加でき、一部はスケジュールを構成できます。
スコープ タグ
[スコープ タグ] タブで、ポリシーを特定の管理者グループにフィルターするタグを選択します(任意)。
割り当て
[割り当て] タブで [グループの追加] を選び、ポリシーを 1 つ以上のグループに割り当てます。
作成
[レビューと作成] タブで設定を確認し、[作成] を選択します。Intune は、対象のユーザーまたはデバイスがIntune にチェックインしたタイミングでコンプライアンスを評価します。
【手順 6】 動作を確認する
管理センターで結果を見る
[デバイス] → [デバイスの管理] の [コンプライアンス] から先ほど作成したコンプライアンス ポリシーを選択します。
デバイス全体の状況がわかります。

[レポートの表示] をクリックするとデバイス名が表示されます。

上記のデバイスは仮想 VM であり、製造元は Microsoft Corporation のため今回のカスタム コンプライアンス ポリシーでは非準拠と判定されています。

ユーザー側からの確認
Company ポータル サイトを開きます。
指定した json に沿って説明等が表示されます。

