[gpresult -r] でコンピュータに適用されているグループポリシーオブジェクト(GPO)を確認する方法

gpresult /r で、現在のコンピューターとサインインユーザーに適用されたグループポリシーのRSoP要約を確認できます。固定タイトルの先頭が欠けていますが、本記事が答える意図は「gpresult /rでコンピューターに適用されているGPOを確認する方法」です。ユーザー側だけが表示される、またはコンピューター側でアクセス拒否になる場合は、昇格したコマンドプロンプト/PowerShellでコンピュータースコープを明示します。

gpresultは読み取りツールです。結果を確認するために最初からgpupdate /force、OU移動、GPO編集、ドメイン再参加を行う必要はありません。まずユーザーとコンピューターのどちらを調べるかを決め、現状のRSoPを保存します。

目次

ユーザー構成とコンピューター構成は別

Group Policyには、ユーザーオブジェクトへ適用されるUser Configurationと、端末オブジェクトへ適用されるComputer Configurationがあります。同じGPO名でも片側だけ設定されることがあり、ユーザーの通常コンソールで取得した結果にコンピューター側が出ないからといって、GPOが未適用とは限りません。

  • ユーザースコープ:サインインユーザーのOU、セキュリティグループ、ループバック処理などを反映する。通常ユーザーでも自分の要約を読めることが多い。
  • コンピュータースコープ:コンピューターアカウントのOU、セキュリティグループ、起動時/バックグラウンド処理を反映する。完全な取得にはローカル管理者として昇格が必要になる。
  • リモート取得:対象端末へのネットワーク到達、ファイアウォール、権限が必要。資格情報をコマンド行の /p に平文で残さない。

基本のgpresult /r

まず現在ユーザーのコンソールで要約を取得します。結果の作成日時、対象ユーザー、対象コンピューターが意図したものかを先に見ます。別ユーザーで実行した結果や管理者の別セッションを、問題ユーザーの結果として扱わないでください。

gpresult /r

/scope を省略した場合、公式構文上はユーザーとコンピューター両方のRSoPが対象です。ただし権限や利用可能なRSoPデータにより片側だけになることがあります。コンピューター設定が必要なら、Windows Terminal、コマンドプロンプト、PowerShellを「管理者として実行」して次を使います。

gpresult /r /scope computer

ユーザー側だけを明示する場合は gpresult /r /scope user です。/r は要約で、設定値の細部や優先順位をすべて表示する形式ではありません。対象GPOの存在、除外理由、最終適用時刻、適用元DCを短時間で確認する入口として使います。

期待する見出しと読み方

日本語版では概ね「コンピューター設定」「ユーザー設定」の区画があり、その中に「適用されたグループ ポリシー オブジェクト」「次のGPOはフィルターで除外されたため適用されませんでした」「システム/ユーザーは次のセキュリティグループの一部です」などが表示されます。英語版ではCOMPUTER SETTINGS、USER SETTINGS、Applied Group Policy Objects、The following GPOs were not applied because they were filtered outに相当します。

  • 前回のグループポリシー適用時刻:問題発生時刻より古ければ、ネットワーク、起動、サインイン、更新周期を確認する。
  • グループポリシーの適用元:意図したドメインコントローラーか。複製遅延が疑われるときの手掛かりになる。
  • 適用されたGPO:名前があることは、GPO内の全設定が有効という意味ではない。該当設定のスコープ、競合、優先順位は詳細レポートで確認する。
  • 除外されたGPO:未適用(空)、セキュリティフィルター、WMIフィルターなどの理由を確認し、まず対象オブジェクトと委任を照合する。
  • セキュリティグループ:RSoP作成時点のメンバーシップ。VPNやサインイン時DC不在では表示情報が古い可能性も考慮する。

HTML詳細レポートを保存する

設定値、Winning GPO、優先順位を読みやすく残すには /h を使います。/h と /r は同時指定できないため、別コマンドです。既存ファイルを上書きするときだけ /f を付け、アクセス権を限定したローカルフォルダーへ保存します。

New-Item -ItemType Directory -Path C:\GpReports -ErrorAction SilentlyContinue
gpresult /h C:\GpReports\gpresult.html /f

レポートにはユーザー名、端末名、ドメイン、グループ、GPO名など管理情報が含まれます。外部共有サイトへ置かず、支援チケットのアクセス権と保存期限を決めます。ARM64版Windowsでは公式注意により /h はSysWOW64側のgpresultだけが動作するため、HTML生成失敗時にアーキテクチャも確認します。

アクセス拒否の扱い

  1. 対象端末へ対話ログオンし、コマンドプロンプトまたはPowerShellを右クリックして「管理者として実行」する。ウィンドウタイトルと whoami で実行コンテキストを確認する。
  2. gpresult /r /scope computer を再実行する。通常ユーザーの結果と混ぜない。
  3. ローカルでも拒否される場合、ローカルAdministrators所属、UAC昇格、Group Policy Client/WMIの状態、Microsoft-Windows-GroupPolicy/Operationalログを読み取る。サービス再構成は診断後に行う。
  4. リモート対象なら、対象コンピューターへの到達、必要なファイアウォール、Group Policy Resultsの委任または対象端末のローカル管理権限を確認する。
  5. 権限不足を解消するためDomain Adminsへ恒久追加せず、GPMCの「Remotely access Group Policy Results data」など目的に合う委任を使う。

出力先が保護フォルダー、既存HTMLが別ユーザー所有、ファイルがブラウザーで開かれている場合も /h は失敗します。まず新しいローカルフォルダーと新しいファイル名を使い、RSoP取得権限の問題とファイル書込権限の問題を分けます。

RSoPの限界

gpresult は適用されたGroup PolicyのResultant Set of Policyであり、端末の全構成を監査する万能ツールではありません。IntuneなどMDM、ローカルスクリプト、アプリ独自設定、レジストリを直接変更した値、未処理の新しいGPOは別経路で確認します。/r は要約なので、設定単位の証拠は /h、必要に応じて /v または /z を使います。

RSoP MMC(rsop.msc)はMicrosoft公式の注意どおりWindows Vista SP1以降すべてのMicrosoft Group Policy設定を表示しません。完全な適用結果の確認ではgpresultを優先します。またGroup Policy Modelingは将来シナリオのシミュレーションでローカルGPOを評価しないため、実端末から取るGroup Policy Resultsと同一ではありません。

変更を伴わない確認手順

  1. 昇格していない状態の gpresult /r を保存し、ユーザー側の対象と時刻を記録する。
  2. 昇格した状態で gpresult /r /scope computer を保存し、コンピューター側の適用GPOと除外理由を記録する。
  3. gpresult /h を新しいファイル名で生成し、SummaryとSettings、Winning GPOを確認する。
  4. GPMCのリンク、OU、セキュリティフィルター、WMIフィルターと読み取り結果を照合する。まだGPOは編集しない。
  5. 再サインインや通常の更新周期後に同じコマンドを再取得し、対象・時刻・GPO名の差だけを比較する。

これらは読み取りまたはレポート生成だけなので、OSやGPOの設定を変更しません。検証後のロールバック作業も不要です。作成したHTML/テキストを運用証跡として残さない場合は、チケット完了後に承認済みの情報保持手順で破棄します。もし診断後にGPOを修正するなら、修正前バックアップ、対象OU限定、パイロット、同じgpresult比較を別の変更計画として実施します。

公式情報・参考資料

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次