しばたテックブログ

気分で書いている技術ブログです。

Windows 10でのNTPサーバーの指定方法

最近お仕事で使っているPCにもWindows 10化の波がきており、NTPサーバーの設定をしようとしたらUIがガラッと変わって面倒なことになっていたので備忘録を兼ねてメモっておきます。

GUIでの設定方法

Windows 10でタスクトレイの時刻から日付と時刻の設定を選択すると、

f:id:stknohg:20160525192009p:plain


【2017/07/13追記】
最新のWindows 10だとタスクバーを右クリックしないと日付と時刻の設定が出なくなってしまいました...

f:id:stknohg:20170713191606p:plain

f:id:stknohg:20170713191617p:plain

【追記ここまで】


以下の様に新しい日付と時刻の設定ダイアログが表示され、こいつにはNTPサーバーを指定するところがありません...

f:id:stknohg:20160525192131p:plain

ここからNTPサーバーを指定するには、このダイアログを下までスクロールさせて関連設定日付、時刻、地域の追加設定をクリックしてコントロールパネルを起動し、

f:id:stknohg:20160525192333p:plain

そこから日付と時刻の設定を選択、

f:id:stknohg:20160525192510p:plain

すると従来の日付と時刻の設定ダイアログが表示されるのでインターネット時刻タブからNTPサーバーの指定をすることができます。

f:id:stknohg:20160525192601p:plain

f:id:stknohg:20160525192634p:plain

率直に言ってかなり面倒なことになっています。

楽な設定方法

流石にこれは辛すぎるのでもう少し楽にできないか調べました。

従来の日付と時刻の設定ダイアログの実体はtimedate.cplファイルですのでコマンドプロンプトやPowerShellから

PS C:\> timedate.cpl

と打てば一発で日付と時刻の設定ダイアログを呼び出しNTPサーバーの設定をすることができます。

f:id:stknohg:20160525193003p:plain

これなら我慢できるレベルですね。

コマンドでの設定方法

さらに楽してすべてコマンドでやりたい場合はw32tmコマンドが使えます。

w32tmコマンドは昔からあるコマンドで使い方も変わっていません。
残念ながら今に至るまでこのコマンドを代替するPowerShell Cmdletは出ておらず、使えそうなPowerShellモジュールも無さげです。
なのでWindows 10でも頑張ってw32tmコマンドを使っていきます。

NTPサーバーを指定する場合はw32tm /configコマンドを以下の様な感じで実行すればOKです。
パラメーターの詳細はググればいくらでも出てきますので本エントリでは触れません(

w32tm /config /update /manualpeerlist:"time.windows.com,0x9" /syncfromflags:manual

時刻同期はw32tm /resyncコマンドで可能です。

w32tm /resync

設定値を確認する場合は、w32tm /query /statusw32tm /query /configurationコマンドが使えます。

w32tm /query /status
w32tm /query /configuration

ただし、w32tmコマンドからNTPサーバーの指定をするとインターネット時刻設定ダイアログの画面表示と実際の設定値が同期しないので注意が必要です。

ダイアログの画面表示はレジストリHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Serversの内容を基に設定されていますので、同期させたい場合はこのキーを適切に設定しする必要があります。
0から始まる連番のキーがダイアログのコンボボックスに表示されるNTPサーバーのリストになり、既定のキーにリストから選択したNTPサーバーの番号を設定します。

本エントリでは具体的な手順にまで触れませんが、頑張れば何とかできるレベルだと思いますので同期させたい場合は気合いでなんとかしてください。