概要  
Windowsの時刻関連の設定をするコマンド。Windows 2000では,SNTP(Simple Network Time Protocol)を使って自動的に時刻同期するWindows Timeサービスが実装されている(Active DirectoryでKerberosが利用するため)。このWindows Timeサービスによる時刻同期の挙動をテストする。例えば手動による同期などが実行できるが,基本的に起動中のWindows Timeサービスを制御するコマンドではない点に注意したい。そのまま利用すると利用するポートが衝突してしまうため,既存のWindows Timeサービスを停止した状態で利用するのがよいだろう。

なお,Windows XP/Windows Server 2003に実装されているWindows TimeサービスはSNTPではなくNTP(Network Time Protocol)というより複雑な方法で時刻同期するため,同じw32tmコマンドでもまったく別のオプションを用意している。


 構文  
w32tm [-?] {-tz|-s コンピュータ名|-adj|-adjoff|-source|-once} [-test] [-v] [-p ポート番号] [-period 設定値]

 利用環境  
Windows 95 ×
Windows 98 ×
Windows Me ×
Windows NT 4.0 ×
Windows 2000 ○
Windows XP □
Windows Server 2003 □
「□」は同じコマンド名でオプションなどが異なっているOS

 w32tmのオプション 
(なし)Windows Timeサービスが停止した状態で実行すると,SNTPクライアントとしてCtrl+Cを押すまで時刻同期を実行する。また,SNTPサーバーとしての設定されている場合は「w32tm -p 123」と実行した場合と同じ動作も併せて実行する(動作の内容は下欄を参照)。
-?ヘルプを表示する。
-tzWindowsタイム・ゾーンについての情報が表示する。ただし,筆者が試したところ,日本語版では全く表示されなかった。-s/-adj/-adjoff/-source/-onceといったオプションとの併用はできない。
s コンピュータ名指定したコンピュータ上で時刻同期を実行する。指定先のコンピュータ上でWindows 2000ベースのWindows Timeサービスが動作中で,Windows認証が事前に実行されていることが必要となる。問題がなく実行できれば「RPC to server コンピュータ名 returned 0x0」と表示され,相手先コンピュータの時刻が同期される。-tz/-adj/-adjoff/-source/-onceといったオプションとの併用はできない。
-adjWindows上で最後に同期された時刻を使って,コンピュータのシステム時刻(Windowsシステム時刻)を同期する。-tz/-s/-adjoff/-source/-onceといったオプションとの併用はできない。
-adjoffシステム・デフォルト(現在のコンピュータ時刻)を使って,コンピュータのシステム時刻を同期する。-tz/-s/-adj/-source/-onceといったオプションとの併用はできない。
-sourceActive Directoryドメイン環境でWindows 2000クライアントが時刻同期をする際に,時刻を同期するサーバーを決定する様子をログとして表示する。-vオプションと同時に利用する必要がある。/-tz/-s/-adj/-adjoff/-onceといったオプションとの併用はできない。
-once時刻同期を1回だけ実行する。-tz/-s/-adj/-adjoff/-sourceといったオプションとの併用はできない。
-test時刻同期のための動作を実行するが,実際には時刻を同期しない。同期の動作をテストしたいときに利用する。
-v実行時の詳細ログを出力する。ただし,-tz/-sオプションには利用できない。また,筆者が確認したいところ,オプションによっては最初のパラメータとして指定しないと表示されないものもあった(例えば-adjオプションなど)。
-p ポートSNTPサーバーとしてWindows Timeサービスを利用したいときに,任意のUDPポートを指定して待ち受けする。SNTPサーバーとして動作させるには,レジストリ上のHKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\Services\W32Time\Parameters\LocalNTPのレジストリ値が「1」になっている必要がある。
-period 設定値w32tmをオプションなし,ないしは-pで実行する際の時刻同期間隔を指定する。具体的な内容は以下のとおり。既存のWindows Timeサービスの設定ではないので,利用時には注意が必要。
0 コマンドのヘルプには「1日ごとに同期」とあるが,筆者が確認したところでは45分ごとに3回同期を実行し,問題ない場合は8時間に1回ずつ同期を実行するように動作した
65535 2日おきに同期
65534 3日おきに同期
65533 7日おきに同期
65532 最初は45分おきに3回同期し,そのあとは8時間おきに同期(デフォルト値)
65531 最初は45分おきに1回同期し,そのあとは1日おきに同期
それ以外の数値 1日のうち指定した回数だけ同期


 使用例1:手動で時刻を同期する(クリックで詳細表示)  
net stop w32time & w32tm -once

 使用例2:1時間に1回の間隔で時刻を同期する(クリックで詳細表示)  
w32tm -period 24 -v

 使用例3:ポート番号を指定して時刻を同期する(クリックで詳細表示)  
w32tm -p ポート番号 -v