GPUpdateコマンドの理解[詳細]

グループポリシーは、多くの組織で使用されている人気のあるActive Directoryサービスです。もし組織がグループポリシーを使用している場合、おそらくgpupdateコマンド、具体的にはgpupdate /forceコマンドについてもご存知かと思います。

gpupdateが何を行っているのかご存知ですか?forceパラメーターを使用する必要がありますか?もし必要な場合、いつ使用するのが適切でしょうか?

この記事では、gpupdateの機能、動作方法、およびそのオプションを最大限に活用する方法について学びます。

GPUpdateとは何ですか?

gpupdateは、マイクロソフトが提供するコマンドラインユーティリティで、すべてのバージョンのWindowsオペレーティングシステムに付属しています。これは、割り当てられたActive Directoryコンピュータ上でのグループポリシーオブジェクト(GPO)の適用を制御するユーティリティです。

通常、管理者がコンピュータやユーザにGPOを割り当てると、そのコンピュータは自動的にドメインコントローラに確認し、GPOで定義された設定を適用します。介入は必要ありません。プロセスは自動的です。

通常の自動スケジュール外で、管理者が新しいまたは変更されたGPOを確認するためにコンピュータを強制的に更新する必要がある場合、gpupdateが便利です。

gpupdateコマンドは、要するに、コンピュータに割り当てられた新しいまたは更新されたGPOがないか、ドメインコントローラに確認し、それらを直ちに適用しようとします。

前提条件

このチュートリアルで提供されている例を実行したい場合、この記事の前提条件は軽いです。

  • A Windows computer joined to an Active Directory domain
  • 少なくとも1つのコンピュータに割り当てられたGPO

Gpupdateの動作方法

ドメインに参加しているコンピュータの前に座って、WindowsのコマンドプロンプトまたはPowerShellを開いてgpupdateを実行すると、一連のタスクが開始されます。

Gpupdate in action
  1. Gpupdateはグループポリシークライアントサービスを起動します。このサービスは、新しいグループポリシー設定を検出し、適用する責任があります。

2. グループポリシークライアントサービスは、コンピュータのログオンDCに接続し、新しいGPOや既存のGPOの更新が利用可能かどうかを確認します。

3. グループポリシークライアントサービスが新しいGPOまたはgpedit.mscでローカルに変更したGPOを見つけた場合、プロセスはコンピュータの設定からユーザーの設定に続くすべてのクライアントサイドエクステンション(CSE)を処理します。

グループポリシークライアントサービスは、Applications and Services Log\Microsoft\Windows\GroupPolicy\Operationalの下にイベントを記録します。

Gpupdate applies computer settings before the user settings.

関連: グループポリシーの詳細の動作方法

4. グループポリシークライアントサービスは、次のリフレッシュ間隔まで待機します。デフォルトでは、90分プラス最大30分のランダムオフセットです。

一部のグループポリシー設定では、ユーザーがログオフまたはコンピューターを再起動する必要があります。これらの設定がポリシーの一部である場合、gpupdateはログオフまたはコンピューターの再起動を求めます。

悪名高い/forceスイッチの説明

これで、gpupdateを実行した際の基本的な動作がわかりました。これまでのところ、すべてうまく動作しているように思えますね。通常のシナリオでは、gpupdateを実行し、そのプロセスを進めることで問題ありません。ただし、特定の状況下では、いくつかの操作を強制する必要がある場合があります。

gpupdateの最も広く使用されているパラメータの1つが/forceスイッチです。このスイッチは、どういうわけかすべてのITプロの心に刻み込まれている必要なスイッチとされています。一般的な認識とは異なり、特定の状況を除いて、実際には必要ありません。

デフォルトでは、gpupdateはスマートに動作し、現在のすべての設定と新しい設定を比較し、適用するだけです。ただし、/forceスイッチを使用することで、gupdateによってすべての設定が再適用されることもあります。なぜそれが必要になるのでしょうか?

設定が予想外の値に変わることがあります。例えば、ユーザーが既存のポリシーで制御されているWindowsの機能を無効にした場合、gpupdate /forceを実行すると、Group Policy Clientサービスが値を再評価し、予想される値に戻ります。また、ユーザーを制限されたグループに再度追加したい場合も同様です。

Group Policy Clientサービスは定期的にいくつかの設定を再適用します。セキュリティ設定など(デフォルトのインターバルは16時間です)。

/forceスイッチを使用しない理由の最大の理由は、ログオンまたは起動時にのみ適用できる設定を扱う場合です。この場合、gpupdate /forceを実行するたびに、新しい設定がそのような操作を必要としない場合でも、Windowsはログオフまたは再起動するように促します。

Gpupdateのパラメータを詳しく調べる

gupdateの動作の基本を理解し、/forceスイッチの使用方法とタイミングを知ったので、gpupdateが提供するその他の機能に焦点を当てましょう。

ヘルプの取得

予想通り、gpupdateコマンドは各パラメータに関する情報やその機能を提供します。詳細には欠けていますが、/?は特定のタスクの実行方法をすばやく復習するために便利です。

Gpupdate /? displays all the switches and options available with the command.

コンピューターまたはユーザーの設定の対象指定

デフォルトでは、gpupdateはGroup Policy Clientサービスにコンピューターとユーザーの両方の設定を処理するよう指示します。これらのセットのうち1つだけを更新する必要がある場合は、/targetパラメータを使用できます。

/targetパラメータを使用する場合、2つのオプションがあります。 /target:computer でコンピューターの設定を対象にするか、/target:user でユーザーの設定を対象にするかを選択できます。

一般的には、特定の状況でのみ/targetパラメータを使用するべきです。具体的には、ユーザーの設定を最初に対象にし、その後にコンピューターの設定を対象にする必要があります。なぜなら、ポリシーにはユーザーとコンピューターの設定が重複する場合があるからです。この場合、ユーザーの設定がコンピューターの設定を上書きし、予期しない動作を引き起こす可能性があるからです。

タイムアウトの作成

Gpupdateは通常、非常に速く実行されますが、応答しないDCやグループポリシークライアントサービスの問題があると、プロセスが停止することがあります。gpupdateを実行した後にさらなるタスクを実行する必要があるスクリプトでgpupdateを実行している場合、タイムアウトを作成することができます。

/waitパラメータを使用して、一定時間が経過した後にgpupdateをコマンドウィンドウに制御を返し、ポリシー処理をバックグラウンドで実行させることができます。 /waitパラメータの使用可能な値は以下の通りです。

Wait Value Result
0 Immediately returns control to console
-1 Waits indefinitely for gpupdate to finish
1+ Waits the number of seconds provided
600 Default value

自動ログオフの強制

一部の設定では、バックグラウンドでの処理ができない場合、ユーザーはログオフして再ログオンする必要があります。gpupdateでは、デフォルトで処理が完了したときにプロンプトが表示されますが、gpupdateが完了したらすぐにログオフしたい場合は、/logoffスイッチを使用します。

/logoffスイッチが常に機能しない場合がある

Windows 10およびWindows Server 2019の両方でテストされた結果、/logoffパラメータが機能しない場合がある不明な問題に遭遇することがあります。

以下は、クライアントの例です。このクライアントには、ログインユーザーのデスクトップのリダイレクトを有効にするために割り当てられたポリシーがあります。フォルダリダイレクトの設定は、ログオン時にのみ処理され、ポリシーのバックグラウンド更新中には処理されません。

「/logoff」スイッチを使用しない場合、通常のユーザーは新しい設定によってログオフが必要であることを警告されます。しかし、「/logoff」スイッチを使用しているかどうかに関係なく、まだプロンプトが表示され、Windowsはログオフしません。

Warning to log off after gpupdate

このシナリオでログオフされるようにするには、「/force」スイッチも使用する必要があります。

自動再起動の強制

「/logoff」スイッチと同様に、「/boot」スイッチは、Windowsがバックグラウンドでコンピュータの設定を処理できない場合に自動的にコンピュータを再起動します。「/boot」スイッチは、コンピュータを対象としたソフトウェアのインストールによく使用されます。

同期処理の強制

グループポリシークライアントサービスは、ポリシーを並列的に(非同期的に)または1つずつ(同期的に)適用します。Windowsは、ユーザーログオン時およびコンピュータの起動時にのみポリシーを同期的に処理し、それ以外の場合は非同期的に処理します。

同期処理中、グループポリシークライアントは、設定が変更されていなくてもすべてのCSE(クライアントサイドエクステンション)を呼び出します。同期処理は、一部の設定が他の設定に依存しているため、必要です。

/syncスイッチを/target:userまたは/target:computerと組み合わせることができます。コマンドウィンドウを管理者として実行していない場合、アクセスが拒否されましたというエラーメッセージが表示されます。

Running gpupdate /sync as a normal user is not allowed.
Running gpupdate /sync as administrator prompts for a restart.

関連記事: PowerShellを管理者として実行する方法

非同期処理は、ドメインユーザーのサインイン体験を最適化する方法です。Windows XP以前では、すべてのポリシー処理が同期的に行われていましたが、一部の設定は2回のログオンまたは2回の再起動が必要であるというデメリットがありました。Windows XP以降のデフォルトモードは非同期です。

結論

この記事に沿って進めた場合、gpupdateの動作とそのスイッチの使い方について明確な理解が得られるはずです。gpupdateを大規模に使用したり、自動化する場合は、そのPowerShellの相当するコマンド、Invoke-GPUpdateもチェックしてください。

Source:
https://adamtheautomator.com/gpupdate/