我需要验证某些 Windows 系统上的当前 NTP 配置。理想情况下,我希望能够通过命令行而不是浏览配置屏幕来执行此操作。
(我正在研究几个不同的操作系统版本,并且配置屏幕在各个版本之间并不总是位于同一位置。)
我希望找到一个快速、好记的命令,只需将其输入到 CMD 控制台即可获得结果。不过,我可以随身携带的批处理文件也可以。
具体来说,我需要以下内容:
- 显示系统是否配置为从 NTP 服务器接收时间。
- 显示系统正在从其接收时间的 NTP 服务器。
- 显示上次同步的时间。
- 显示系统当前时间。
要实现这些结果需要什么命令?
寻找与 Windows XP、7、Server 2003 和 Server 2008 交叉兼容的解决方案。
答案1
在命令行中输入
w32tm /query /configuration
w32tm /query /status
Time /T
w32tm /query /configuration
为您提供已设置的配置。
w32tm /query /status
为您提供以下信息:
- 地层
- 跳跃指示器
- 精确
- 上次同步
- NTP 服务器
- 轮询间隔
time /T
输出当前系统时间。
注意:w32tm /query
最初在 Windows Vista 和 Windows Server 2008 的 Windows Time 客户端版本中可用。请参阅Windows 时间服务工具和设置
答案2
答案3
我试过:
w32tm /query /status
我有:
The command /query is unknown.
在另一台机器上,我得到:
The following error occurred: The service has not been started. (0x80070426)
然后我尝试:
reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time
我有:
ERROR: The system was unable to find the specified registry key or value.
然后我尝试:
net time /querysntp
我有:
This computer is not currently configured to use a specific SNTP server.
在另一台机器上,我得到了帮助页面,其中还显示:
The /QUERYSNTP and /SETSNTP options have been deprecated. Please use w32tm.exe to configure the Windows Time Service.
因此,基本上,该服务没有运行。以下这些说明,我这样做了:
w32tm /unregister
w32tm /unregister
w32tm /register
net start w32time
最后,以上所有方法均可奏效。(注意:如果net start
失败,请参见下文)然后我只需要设置我的 ntp...我这样做了:
w32tm /config /manualpeerlist:10.0.0.5 /syncfromflags:manual /reliable:yes /update
按照以下指示这里但也许可以简单到如下程度:
net time /setsntp:10.0.0.5
按照指示这里. (10.0.0.5 是我的本地 NTP 服务器)。如果您没有使用本地 NTP 服务器,则可以使用通用服务器:
w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /reliable:yes /update
最后,您可能需要执行以下操作,但这对我来说没有必要:
w32tm /config /update
w32tm /resync /rediscover
注意:如果net start w32time
失败并出现错误 1290(服务启动失败,因为同一进程中的一个或多个服务具有不兼容的服务 SID 类型设置),请按照以下步骤操作这里:
w32tm /unregister
w32tm /register
sc config w32time type= own
net start w32time
然后按照上述操作即可。
注 2:如果 NTP 服务在重启时没有自动启动,则可能是由于其启动设置,如所述这里:根据您的 Windows,它可能设置为仅在加入域时启动。您可以使用以下命令进行检查:
sc qtriggerinfo w32time
如果将其配置为在您加入域时启动,并且您的计算机中没有设置域,则它将不会启动服务并设置时间。它可能不会加入域,因为您不希望它这样做。无论如何,只需更改启动它的触发器即可。例如,要在计算机有网络时启动(因此能够访问服务器),请执行以下操作:
sc triggerinfo w32time start/networkon stop/networkoff
答案4
使用:
net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"0.it.pool.ntp.org 1.it.pool.ntp.org 2.it.pool.ntp.org 3.it.pool.ntp.org"
net start w32time
w32tm /config /update
w32tm /resync /rediscover
.bat 示例文件位于https://gist.github.com/thedom85/dbeb58627adfb3d5c3af。
我也推荐这个程序:http://www.timesynctool.com/