【摘要】

运维管理员往往需要定期查看客户端的时间同步情况,与NTP服务器的时间偏差。奈何数量众多,若不借助第三方工具是否有办法批量获取时间差呢?本文将介绍如何简单使用命令解决问题。

【正文】

一、 使用psexec工具

针对远程批量收集客户端时间问题,可以借用psexec.exe工具(下载链接:http://technet.microsoft.com/en-us/Sysinternals/bb897553.aspx),原理是远程登录到目标计算机然后运行命令行,方法如下(注:以下[括号中内容]为需要根据实际情况修改内容,并注意实际中不需要输入[括号]):

1. 在域内NTP服务器上运行cmd,导航到psexec.exe路径下,例如e:\;

2. 创建一个计算机清单,如e:\pc.txt,里面包含需要远程的计算机IP地址,格式为一行一个即可:

192.168.0.1

192.168.0.2

……

3. 创建用于存储结果的文档,如e:\time.txt;

4. 方法一:运行命令(远程获得主机名以及时间,反馈到发起计算机本地time.txt中):

e:\psexec @[e:\pc.txt] cmd /c "hostname & net time \\localhost" >[e:\time.txt]

(不添加用户与密码参数则自动使用当前权限)

或者:

e:\psexec –u [domainname\username] –p [password] @[e:\pc.txt] cmd /c "hostname & net time \\localhost" >[e:\time.txt]

(添加对清单计算机都有访问权限的用户名和密码)

完成后在本地e:\time.txt可以看到所有结果,并利用excel进行后续筛选处理

5. 方法二:运行命令(获得与指定NTP服务器的时间偏差,反馈到发起计算机本地time.txt中):

e:\psexec –u [domainname\username] –p [password] @[e:\pc.txt] cmd /c " w32tm /stripchart /computer:[NTPServer] /samples:1 /dataonly & hostname " >[e:\time.txt]

完成后在本地e:\time.txt可以看到所有结果,并利用excel进行后续筛选处理

二、 循环使用w32tm命令

在域内NTP服务器上使用for…do…语句,目的是循环读取pc.txt中的计算机清单然后逐个对比当前计算机的时间偏差,最后附加地写入到time.txt中:

For /F "tokens=1" %a in ([e:\pc.txt]) do (w32tm /stripchart /computer:%a /samples:1 /dataonly & hostname) >>[e:\time.txt]

完成后在本地e:\time.txt可以看到所有结果,并利用excel进行后续筛选处理。