2012-05-16 13:22:14 +0000 2012-05-16 13:22:14 +0000
66
66

如何检查系统的当前NTP配置?

我需要在一些Windows系统上验证当前的NTP配置。理想情况下,我希望能够通过命令行来完成,而不是通过配置屏幕来导航。

(我在几个不同版本的操作系统上工作,而且不同版本的配置屏幕往往不总是在同一个地方。)

我希望能找到一个快速的、易记的命令,可以直接在CMD控制台中输入命令来得到结果。

具体来说,我需要以下几点:

  • 显示系统是否被配置为从NTP服务器接收时间。

  • 显示最后一次同步的时间。

  • 显示系统上的当前时间。

需要什么命令来实现这些结果?

寻找一个与Windows XP, 7, Server 2003, 和Server 2008交叉兼容的解决方案。

答案 (6)

83
83
83
2012-05-16 14:39:48 +0000

在命令行中,键入

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 Time Service Tools and Settings

17
17
17
2016-07-11 22:30:57 +0000

这就回答了你最后一个问题:

打开命令提示符,准确地输入:

w32tm /stripchart /computer:NTPServerNameOrIP /dataonly /samples:x(你要多少返回多少)

它返回的时间和NTP服务器时间的差值。如果它返回时间,错误。

下面是一个命令的例子。

8
8
8
2015-03-13 22:33:22 +0000

我又试了一下:

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 start失败,请看下文) 然后我只需要设置我的ntp….. 我是按照这里的说明来做的,但也许可以像这里那样简单:

net time /querysntp
This computer is not currently configured to use a specific SNTP server.

。(10.0.0.5是我的本地NTP服务器)。如果你没有使用本地NTP服务器,你可以使用通用的NTP服务器:

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 w32time以错误1290失败(由于同一进程中的一个或多个服务的SID类型设置不兼容,所以服务启动失败),那么按照以下步骤进行操作这里

w32tm /config /manualpeerlist:10.0.0.5 /syncfromflags:manual /reliable:yes /update

然后按照上面的步骤进行操作。


注意2:如果NTP服务在重启时没有自动启动,可能是由于它的启动设置导致的,如这里:根据你的windows系统,可能是在加入域时才启动。你可以通过:

net time /setsntp:10.0.0.5

检查一下,如果设置为加入网域时启动,而你的机器没有设置网域,那么它就不会启动服务并设置时间。它不加入域可能是因为你不希望它加入域。不管怎么说,只要改变哪个触发器启动它就可以了。例如,要在机器有网络时启动(因此能够访问服务器),请执行:

w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /reliable:yes /update
5
5
5
2016-03-01 11:37:26 +0000

使用方法:

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/

3
3
3
2012-05-16 14:10:42 +0000

从命令行,你可以得到这样的信息:

reg QUERY [\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
reg QUERY [\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config

似乎至少应该够了,如果我理解你的问题的话,这应该足够了。AFAIK,"reg “命令在所有这些不同的平台上都可以工作,只要你有正确的服务运行。

2
2
2
2012-05-16 14:25:34 +0000

看一看w32tm命令行工具。它可以设置和查询配置,并与另一台电脑报出时间偏移的/条图。