Windowsドメイン環境でグループポリシー(GPO)設定を更新する完全ガイド
本記事では、Active Directoryドメインに参加しているWindowsコンピューターでグループポリシー(GPO)設定を更新する方法について詳しく解説します。具体的には、グループポリシーの自動更新の仕組み、GPUpdateコマンドの使い方、そしてグループポリシー管理コンソール(GPMC.msc)やInvoke-GPUpdate PowerShellコマンドレットを使ったリモート更新の手順までを網羅的にご紹介します。
グループポリシーの更新間隔を変更するには?
ローカルまたはドメインのグループポリシー(GPO)で設定した新しい設定がWindowsクライアントに適用される前に、Group Policy Clientサービスがポリシーを読み込み、Windowsの設定へ変更を反映する必要があります。この一連の処理は「グループポリシーの更新(Group Policy Update)」と呼ばれます。
GPO設定は、コンピューターの起動時やユーザーのログオン時に更新されるほか、バックグラウンドでも90分+0〜30分のランダムなオフセットごとに自動的に更新されます。つまり、ドメインコントローラー上でGPOを変更した後、遅くとも90〜120分以内には全クライアントに設定が適用されるということです。
なお、ドメインコントローラー自体はデフォルトでより短い5分間隔でGPO設定を更新します。
この更新間隔は、GPOエディターの[コンピューターの構成] → [管理用テンプレート] → [システム] → [グループポリシー]にある「コンピューターのグループポリシーの更新間隔の設定」ポリシーで変更可能です。
ポリシーを「有効」にし、以下の2つの項目の値(分単位)を設定します。
- コンピューターにグループポリシーを適用する頻度(0〜44640分):クライアントがバックグラウンドでGPO設定を更新する間隔です。ここに「0」を指定すると7秒ごとにポリシーが更新されるため、実運用では設定しないでください。
- 更新間隔に追加するランダム時間(0〜1440分):すべてのクライアントが同時にドメインコントローラーへポリシーを要求しないよう、前項の間隔に追加されるランダムなオフセットの上限値です。DCへの同時アクセス集中を抑える役割を果たします。
注意点として、更新間隔を極端に短くするとドメインコントローラーへのトラフィックが増大し、ネットワーク全体への負荷が高まります。運用環境に応じた適切な値を設定しましょう。
GPUpdate.exeコマンドでGPO設定を即時更新する
管理者なら誰もが知っているgpupdate.exeコマンドは、コンピューター上のグループポリシー設定を手動で更新するための基本ツールです。多くの方は無条件にgpupdate /forceを実行しますが、この/forceオプションはドメインコントローラーから対象となるすべてのGPOを再読み込みし、全設定を再適用します。そのため、クライアントがDCへ大量に接続することになり、ネットワークやドメインコントローラーに余計な負荷をかける可能性があります。
一方、オプションなしで単純にgpupdateを実行すれば、新規追加・変更されたGPO設定だけが適用されるため、通常はこちらで十分です。
更新が成功すると、以下のようなメッセージが表示されます。
Updating policy... Computer Policy update has completed successfully. User Policy update has completed successfully.
もし一部のポリシーや設定が正しく適用されていない場合は、gpresultコマンドで適用状況を診断し、原因を特定してください。
ユーザーポリシーのみを更新したい場合は次のコマンドを使います。
gpupdate /target:user
逆にコンピューターポリシーのみを更新する場合はこちらです。
gpupdate /target:computer /force
また、バックグラウンドでは適用できない種類のポリシーがある場合、ログオフを伴って更新させることもできます。
gpupdate /target:user /logoff
Windowsの起動時にしか適用できないGPO変更については、再起動を指定しましょう。
gpupdate /boot
GPMC(グループポリシー管理コンソール)からリモート更新を強制する方法
Windows Server 2012以降では、GPMC.msc(グループポリシー管理コンソール)を使って、ドメイン内のコンピューターへGPO設定をリモートから一括適用できます。
Windows 10/11の管理端末でGPMCを使用するには、事前にRSAT(リモートサーバー管理ツール)をインストールしておく必要があります。PowerShellから以下のコマンドで導入できます。
Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0
設定変更や新しいGPOの作成・リンクを行った後は、GPMC上で対象の組織単位(OU)を右クリックし、コンテキストメニューから[グループポリシーの更新]を選択するだけです。確認ダイアログに更新対象のコンピューター数が表示されるので、[はい]をクリックして強制更新を実行します。
その後、OU内の各コンピューターに対して順次リモート更新が行われ、各端末での更新結果(成功/失敗)が一覧で確認できます。
仕組みとしては、リモートコンピューター上のログオンユーザーごとにGPUpdate.exe /forceを実行するタスクがタスクスケジューラに登録され、ネットワーク負荷を分散させるため最大10分程度のランダムな遅延を置いて実行されます。
このGPMCによるリモート更新機能をクライアント側で動作させるには、以下の前提条件を満たす必要があります。
- Windows DefenderファイアウォールでTCPポート135が許可されていること
- Windows Management Instrumentation(WMI)サービスとタスクスケジューラ(Task Scheduler)サービスが有効であること
対象コンピューターの電源が入っていなかったり、ファイアウォールで通信がブロックされている場合は、コンピューター名の横に「The remote procedure call was canceled. Error Code 8007071a(リモート プロシージャ コールが取り消されました)」というエラーが表示されます。
実質的には、この機能は各コンピューターで個別にGPUpdate /forceを実行するのと同じ結果をもたらします。
Invoke-GPUpdate:PowerShellでリモートGPO更新を実行する
RSATに含まれるInvoke-GPUpdate PowerShellコマンドレットを使えば、スクリプトから柔軟にリモートGPO更新を実行できます。例えば、特定のコンピューター上のユーザーポリシーをリモート更新するには、次のように記述します。
Invoke-GPUpdate -Computer "frparsrv12" -Target "User"
パラメータを付けずに実行した場合は、ローカルコンピューター上でgpupdate.exeと同等の更新が行われます。
Get-ADComputerコマンドレットと組み合わせれば、特定のOU配下の全コンピューターへ一括適用も可能です。
Get-ADComputer –filter * -Searchbase "OU=Computes,OU=Mun,OU=DE,dc=woshub,dc=com" | foreach{ Invoke-GPUpdate –computer $_.name -force}
さらにフィルターを工夫すれば、「ドメイン内のすべてのWindows Serverホスト」のような条件付きの一括更新も実現できます。
Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }| foreach{ Invoke-GPUpdate –computer $_.name –RandomDelayInMinutes 10 -force}
-RandomDelayInMinutesパラメータを指定すると、更新タイミングにランダムな遅延を設けられます。多数のコンピューターを同時に更新する際のネットワーク負荷を平準化するのに有効です。逆に即時適用したい場合は-RandomDelayInMinutes 0を指定します。
対象コンピューターがオフラインの場合、以下のようなエラーが返されます。
Invoke-GPUpdate : Computer "frparsrv12" is not responding. The target computer is either turned off or Remote Scheduled Tasks Management Firewall rules are disabled.
最後に一点注意点として、Invoke-GPUpdateをリモート実行した場合やGPMCから更新した場合、ユーザーのデスクトップ上にgpupdateのコマンドウィンドウが一瞬表示されることがあります。ユーザー体験を考慮する場合は、更新時間帯を業務時間外に設定するなどの工夫をおすすめします。
-
Windows 10でローカルグループポリシー設定をデフォルト(初期状態)にリセットする2つの方法
Windows 10は、システム全体にわたって柔軟なカスタマイズと設定変更が可能なOSです。通常のユーザーであれば、必要な設定のほとんどは「設定」アプリから簡単に行えます。Microsoftが一般的な設定項目のほとんどをこのアプリへ統合しつつあるため、その利用頻度はますます高まっています。それ以外にも、電源オプションなどの一部の変更には「コントロールパネル」が使われることがあります。しかし、こうした標準的なツールからでは変更できない項目も存在します。そのような場合に活躍するのが「ローカルグループポリシーエディター」です。これはMMC(Microsoft Management Console)と
-
Windows 10 Homeにグループポリシーエディタがない?無料ツール「Policy Plus」で解決!
Windowsで特定の管理機能を有効化・制御したい場合、そのアプローチは複数ありますが、結局のところすべてレジストリ変更に行き着きます。レジストリエディタ(regedit.exe)で手動変更するか、あるいは「グループポリシー」を利用するかです。後者は管理用テンプレートの集合体で、システム機能を柔軟に設定し、それを複数の端末へ一括展開できるため、管理業務が大幅に簡素化されます。内部ではレジストリが変更されることに変わりありませんが、グループポリシーは人間が読みやすいUIエディタ経由で操作でき、手動のレジストリ編集よりはるかに安全です。唯一の問題は、Windows Homeエディションにはグループ