Active Directory の GPO を展開した後、「結局どの端末に適用(更新)されたのか」「何台まで反映できたのか」を数字で示したい場面は多いのに、GPMC だけでは“適用済み端末数”を一発で集計できません。本記事では、GPInventory を使った横断収集、gpresult/PowerShell での自動集計、そして“更新された証拠”を残して確実に数える実践策まで、現場で使えるレポート作成方法を整理します。
なぜ「GPO の適用済み端末数」はそのままでは集計できないのか
GPO は「リンクした瞬間に全端末へ一斉反映」される仕組みではなく、端末側の起動・サインイン・定期更新のタイミング、到達性、権限、レプリケーション、フィルタ条件などの要素で反映の早さと成否が変わります。加えて、GPMC で見えるのは主に「リンクされている」「セキュリティフィルタの条件」までで、各端末が実際に処理したか(RSoP 上で勝ったか/弾かれたか)は、端末ごとの結果を見に行かないと分かりません。
そのため、レポートを成立させるには、概念的に次のどれを数えたいのかを先に決めるのが重要です。
最初に決めるべき「適用(更新)」の定義
「適用された」と一口に言っても、現場の会話では意味が混ざりやすいです。レポートの目的に合わせて定義を固定すると、関係者との認識ズレが激減します。
| 用語(レポート上の定義) | 意味 | 判定に使う代表データ | 注意点 |
|---|---|---|---|
| 対象(スコープ内) | OU/サイト/ドメインにリンクされ、セキュリティフィルタ等で対象になりうる | AD 上のコンピューター一覧、GPO のリンク/フィルタ設定 | 「対象=適用」ではない。端末が未接続・未起動なら当然反映しない |
| 適用(Applicable) | 端末側の処理で、当該 GPO が適用候補として認識された | RSoP(gpresult / GPMC Results / Get-GPResultantSetOfPolicy)、運用ログ(Operational) | “候補に入った”だけで、設定が最終的に勝っているとは限らない |
| 適用済み(Applied) | RSoP 上で当該 GPO が適用され、ポリシー処理が成功した | RSoP レポート(HTML/XML) | 競合により「当該 GPO の設定が勝っていない」こともありうる |
| 更新済み(Updated/Processed) | 端末が“そのバージョンの GPO”を処理した証拠がある | スタンプ(レジストリ/ファイル/イベント) | 「設定が意図通り有効」かどうかは別。状態確認(コンプライアンス)まで分けると強い |
多くの組織で求められるのは、まず「適用済み端末数(適用率)」、次に「更新済み端末数(この変更が実際に届いた台数)」です。後者まで求められる場合は、RSoP 収集だけではグレーが残るため、記事後半で紹介する「スタンプ方式」が効きます。
反映タイミングの基本を押さえる(レポート作成の“待ち時間”の根拠)
「配布してからどれくらいで集計すべきか」を説明できないと、レポートの数字が“低く見える”だけで騒ぎになりがちです。基本として、端末は起動・ログオン時に前景で処理し、その後もバックグラウンドで定期的に更新します。既定では、クライアント/サーバーは90分ごと(最大30分のランダムオフセット付き)で更新チェックを行い、ドメイン コントローラーは5分ごとにコンピューターポリシー変更をチェックします。
また、GPO は AD と SYSVOL の両方に要素を持ち、レプリケーションが別系統で動きます。同一サイト内でも SYSVOL 側は DFSR の既定で 15 分間隔などの影響を受けるため、「作った瞬間に全 DC で同じ状態」にはならない点も、展開直後の集計で重要です。
GPO 適用状況レポートの代表的なやり方(比較表)
結論から言うと、端末横断で“適用済み端末数”を集計する現実解は次のいずれかです。環境規模・求める精度・運用コストで選びます。
| 手法 | 向いている規模 | 集計のしやすさ | 強み | 弱み/前提 |
|---|---|---|---|---|
| GPInventory(RSOP/WMI を一括収集) | 中〜大(台数多め) | XML/テキスト出力→Excel 集計が簡単 | 「GPO 展開の追跡」「未適用端末の洗い出し」に直球 | 公式の動作環境が古い前提(管理端末側の要件注意) |
| gpresult(/h /x)をスクリプトで回収 | 小〜中(工夫すれば大も可) | HTML/XML を自動生成→文字列/構造解析で集計 | 標準コマンドで導入が軽い。リモート対象も可 | 通信/権限の壁に当たりやすい。HTML 解析はコツが必要 |
| Get-GPResultantSetOfPolicy(PowerShell)で回収 | 小〜大(自動化向き) | XML を出して処理しやすい | RSAT/GroupPolicy モジュールと相性良い。スクリプト化しやすい | 実行環境に RSAT が必要。リモート対象の到達性が前提 |
| GPMC の Group Policy Results Wizard(RSoP) | 個別調査向き | 集計は手作業寄り | GUI で分かりやすい。勝った GPO(Winning GPO)も追いやすい | 大量端末の集計には不向き |
| スタンプ方式(GPO で“反映証拠”を残す) | 中〜大(継続監視にも強い) | レジストリ/ファイルを横断クエリ→台数カウントが容易 | 「更新されたか」を強く証明できる。レポート精度が上がる | GPO 側の仕込みが必要(設計・運用ルールが要る) |
方法1:GPInventory で「適用済み端末数」を横断集計する
多数端末を横断して「どの端末がどの GPO を適用しているか」を集計したいなら、Microsoft が提供している Group Policy Inventory(GPInventory.exe)が分かりやすい選択肢です。複数台に対して RSOP(結果セットポリシー)や WMI クエリを実行し、結果を XML/テキストへエクスポートでき、Excel で分析しやすいのが特徴です。
特に「GPO の展開状況を追跡する」「新しい GPO を適用していない端末を探す」といったユースケースが明記されています。
公式ダウンロードページでは、ツールの説明に加えて、サポート OS(管理端末側)や .NET 要件が示されています。まずは自組織の運用端末(管理用 PC/サーバー)で動くかを確認した上で採用するのが安全です。
GPInventory の進め方(運用で詰まらない流れ)
- 入手:Microsoft Download Center からインストーラー(gpinventory.msi)を取得して導入します。
- 対象を絞る:最初から全ドメインを狙わず、まずは対象 OU 単位などで小さく回します(通信/権限/速度の前提確認のため)。
- RSOP クエリで収集:端末ごとに「適用されている GPO」を収集できる形でクエリを実行します。
- エクスポート:結果を XML またはテキストに出力します。
- Excel 集計:目的の GPO 名でフィルタし、端末名を重複排除してカウントします(ピボットテーブルが楽です)。
Excel での集計イメージ(ピボットで“適用台数”を出す)
GPInventory の出力は、最終的には「端末 × GPO」の情報になります。Excel 側では次の考え方が鉄板です。
- 行:端末名(ComputerName)
- フィルタ:GPO 名(DisplayName)
- 値:端末名の個数(重複しない数)
これで「指定 GPO が適用されている端末の台数」と「一覧」が同時に得られます。さらに、OU やサイト、OS などの属性も一緒に取れるなら、レポートが一気に実務向きになります(例:拠点別に適用率を出す、古い OS だけ未適用が多い等)。
GPInventory 運用でよくある注意点
| つまずきポイント | 起きやすい症状 | 対策の方向性 |
|---|---|---|
| 通信(WMI/RPC/ファイアウォール) | 一部端末だけ取れない、タイムアウトする | 対象範囲を分割して実行、必要な管理通信を許可、管理用ネットワーク経由で実施 |
| 権限不足 | アクセス拒否で収集不可 | 適切な管理権限(最小権限)を準備し、監査ログも確認 |
| “適用”と“更新”の混同 | 適用済みでも「更新されたのか?」が不明 | 後述のスタンプ方式で「更新済み」を別指標で持つ |
方法2:gpresult で RSoP を出し、スクリプトで台数を数える
導入が最も軽いのは、Windows 標準の gpresult を使って RSoP を出力し、それを集計する方法です。gpresult は RSoP 情報を表示し、HTML(/h)や XML(/x)として保存できます。リモートコンピューターを対象にする構文も用意されています。
単体端末の確認(最短で状況把握する)
まず“どんなレポートが出るのか”を掴むなら、対象端末で次が手堅いです。
gpresult /h C:\Temp\gpresult.html /f
HTML を開いて、目的の GPO が「適用済み」なのか、「拒否(Denied)」なのか、その理由は何か(セキュリティフィルタ/WMI/権限など)を確認します。
複数端末を集計する時の考え方(gpresult を“回収する”)
gpresult は標準コマンドなので、管理端末から対象コンピューター一覧に対して繰り返し実行し、XML を集めてから「特定の GPO 名が含まれているか」を判定すれば、台数カウントができます。XML 解析を厳密にやるほど精度は上がりますが、まずは運用に載せやすい段階として「XML 内の GPO 名を検索してカウント」でも十分に役立つケースがあります。
例として、イメージの手順は次の通りです。
- AD から対象コンピューター名一覧を取得(OU 単位など)
- 到達性チェック(Ping/名前解決/WinRM など)
- 各端末の gpresult を XML で出力して保存
- XML 内に目的の GPO 名があるか判定し、適用済み端末数を集計
大量端末に対して一気に走らせるとネットワーク負荷や対象端末の負荷が跳ねることがあるため、「OU 単位で分割」「同時実行数を制限」「営業時間外に実行」など、実務では運用設計が重要です。
方法3:PowerShell(Get-GPResultantSetOfPolicy)でレポートを自動生成する
「gpresult を回す」発想を PowerShell に寄せて運用しやすくしたい場合は、Get-GPResultantSetOfPolicy が便利です。指定したコンピューターの RSoP を HTML/XML ファイルに書き出せるため、スクリプトで回収・集計する土台になります。
公式ドキュメントでも、-Computer パラメーターで指定したコンピューターのレポートを XML で作る例が示されています。
自動集計の実務ポイント(“作って終わり”にしない)
PowerShell 化するなら、次の3点を最初から盛り込むと運用が安定します。
- 失敗を前提にする:到達不可/権限不足/一時エラーは必ず混ざるので、成功・失敗を分けて CSV に残す
- 再実行しやすくする:失敗端末だけ再実行できるように「失敗一覧」を出す
- “対象台数”の母数を固定する:AD 上の「有効な端末数」を別で集計し、適用率(適用済み/対象)で出す
RSoP 収集はあくまで「その時点の状態のスナップショット」です。レポートに日時(いつ集計したか)と、対象 OU/対象台数の定義を添えるだけで、読み手の納得感が大きく上がります。
方法4:GPMC の Group Policy Results Wizard は“個別確認”の決定版
大量集計には向きませんが、未適用端末の原因調査には非常に強いのが GPMC の Group Policy Results(RSoP Logging)です。GPMC は指定したユーザー/コンピューターの RSoP レポートを作成し、どの GPO がどの設定を“勝ち取ったか(Winning GPO)”まで確認できます。
注意点として、リモートで結果を取りに行くには、ドメイン/OU 側の権限(例:Remotely access Group Policy Results data)や、対象端末への到達性、ローカル管理者権限などが前提になります。
“更新された”を強く証明したいなら:スタンプ方式が一番事故が少ない
「適用済み端末数」は RSoP で取れますが、現場で揉めやすいのが“更新された”の意味です。たとえば次のようなケースでは、RSoP を見ても「設定が届いた」と断言しづらいことがあります。
- 端末がオフラインだった(そもそも更新処理が走っていない)
- 端末は更新したが、当該ポリシーの CSE が背景更新で処理されない種類だった
- 同名/類似の設定が別 GPO で上書きされ、意図した設定が勝っていない
そこで強いのが、GPO 自体に「反映したら残る証拠(スタンプ)」を仕込むやり方です。これは「展開レポート」を作る組織で、長期運用ほど効いてきます。
スタンプ方式の定番:GPP でレジストリ値を作る
例として、対象がコンピューター設定なら、GPO の「Group Policy Preferences(GPP)」で以下のようなレジストリを作成/更新します。
| 項目 | 例 | 狙い |
|---|---|---|
| キー | HKLM\Software\Company\GPOStamp | “会社管理の証跡”として独立させる |
| 値名 | Deploy_GPO_Name | どの展開かが分かる |
| 値データ | 2026-01-08_v1 | バージョン管理(再展開時に更新済み判定ができる) |
この方式のメリットは、端末側に証拠が残るので、横断的な台数カウントが非常に簡単になる点です。たとえば「リモートレジストリ」「PowerShell Remoting」「資産管理ツール(SCCM/Intune/EDR 等の収集機能)」のいずれかで値を集めて、値が一致した端末数をカウントすれば「更新済み台数」が出ます。
また、スタンプ値を変える(v1→v2)だけで、「最新版まで反映できた台数」を追えるため、運用が回りやすいのも大きな利点です。
スタンプ方式を安全に運用するためのコツ
- 命名規則を決める:GPO 名をそのまま入れるより、展開ID(Change番号など)を入れると監査が楽
- “誰が見ても分かる場所”に置く:HKLM 配下で会社名キーを切る、など一貫性を作る
- 撤収ルールも決める:一時的な展開なら、一定期間後にスタンプを消す/履歴を残す方針を作る
より高度にやるなら:イベントログ(Operational)で「適用/拒否」を集める
端末側には Group Policy の詳細がイベントとして記録されます。Microsoft のトラブルシューティング ガイダンスでも、より詳細な情報としてOperational イベントログに「適用された GPO の一覧」「拒否された GPO の一覧(理由付き)」がある旨が示されています。
また、Microsoft TechCommunity の解説では、Group Policy Operational ログのイベントとして、適用対象となるポリシー一覧を示すイベント(例:5312)や、セキュリティフィルタで除外されたポリシーを示すイベント(例:5313)などが紹介されています。
これを Windows Event Forwarding(WEF)や SIEM/ログ基盤に集約すると、「どの OU の何台が、いつ、どの GPO を処理したか」を時系列で追えるようになります。導入は重くなりますが、継続的な可視化や監査要件がある組織では強力です。
レポートの精度を上げる“事前チェックリスト”(通信・権限・母数)
「集計が合わない」「台数が少なく出る」の多くは、集計手法の問題ではなく前提条件の不足です。実務で効くチェックリストをまとめます。
| チェック項目 | なぜ重要か | 確認のヒント |
|---|---|---|
| 対象台数(母数)の定義 | 適用率の分母がブレると議論が崩れる | OU 内の有効なコンピューター、除外条件(無効/退役端末)を固定 |
| GPO レプリケーション | DC によって見える GPO が違うと“未更新”に見える | 展開直後は特に注意。AD と SYSVOL が別経路で複製される |
| 端末の更新タイミング | 端末がまだ更新サイクルに入っていないだけで未適用に見える | 既定の背景更新間隔(90分+ランダム)と、必要なら手動更新を計画 |
| リモート照会の到達性 | 収集できない端末が増えると集計が歪む | WMI/RPC/WinRM、FW、名前解決、サブネット間ルール |
| 権限(RSoP 取得) | 権限不足だと“未適用”ではなく“未取得”になる | GPMC の委任(Remotely access…)やローカル管理者権限の設計 |
「数が合わない」ときに疑うべき原因(実務向け)
レポートで「適用率が想定より低い」と出た場合、典型的な原因は次のあたりです。調査の順番を間違えると無駄に時間が溶けるので、上から潰していくのが効率的です。
| 原因カテゴリ | よくある現象 | 確認ポイント |
|---|---|---|
| 到達性(オフライン/VPN/電源断) | 特定拠点・特定部門だけ未適用が多い | 端末がネットワークに出ているか、DC 到達性、DNS |
| セキュリティフィルタ/委任 | “対象 OU なのに適用されない” | Authenticated Users の扱い、対象グループ、拒否(Deny)ACE |
| WMI フィルタ | OS/機種で適用が分かれる | WMI 条件が真になっているか(テスト環境で検証) |
| 競合・上書き(優先順位) | GPO 自体は適用されるが設定が効いていない | Winning GPO、リンク順、Enforced/Block Inheritance |
| CSE の処理タイミング差 | 背景更新では反映しない設定がある | ソフトウェア配布やリダイレクト等、処理がログオン/起動依存か |
「展開→集計→是正」を最短で回すための実践テンプレ
最後に、現場で回しやすい運用テンプレを提示します。これをベースにすると「台数が出ない」「理由が分からない」の泥沼を避けやすくなります。
ステップ1:母数(対象台数)を固定する
- 対象 OU(またはサイト/ドメイン)を明記
- 無効なコンピューターアカウント、退役端末、検証端末の扱いを決める
- セキュリティフィルタ対象グループがあるなら、その台数も別で出す
ステップ2:適用済み端末数を出す(RSoP ベース)
- 小規模なら:GPMC Results Wizard / gpresult / Get-GPResultantSetOfPolicy
- 中〜大規模なら:GPInventory または PowerShell 自動回収(RSoP を量産して集計)
ステップ3:更新済み端末数を出す(スタンプで確実化)
- GPO でレジストリ等のスタンプを更新する(展開ID/バージョンを値に入れる)
- 資産管理/スクリプト/ログ基盤でスタンプ値を回収して台数カウント
ステップ4:未適用端末の“理由別リスト”を作る
レポートは「適用済み台数」だけだと次アクションに繋がりません。未適用端末を次のように分類すると、対応が速くなります。
- 到達不可(オフライン/電源断/ネットワーク不通)
- 拒否(セキュリティフィルタ/WMI/権限)
- 競合(GPO は適用だが設定が勝っていない)
- 処理タイミング待ち(ログオン/再起動が必要な種類)
参考リンク(公式中心)
- Group Policy Inventory (GPInventory.exe)(Microsoft Download Center)
- gpresult コマンド(Microsoft Learn)
- Get-GPResultantSetOfPolicy(Microsoft Learn / PowerShell)
- Group Policy Modeling and Results(Microsoft Learn)
- Invoke-GPUpdate(Microsoft Learn / PowerShell)
- Group Policy processing(更新間隔・処理の仕組み)(Microsoft Learn)

コメント