我一直在尝试使用check_time.vbs检查Windows时间。
以下是脚本:http://pastebin.com/NfUrCAqU
可以显示帮助信息:
C:\Program Files\NSClient++\scripts>cscript //NoLogo check_time.vbs /?
check_time.vbs V1.01
Usage: cscript /NoLogo check_time.vbs serverlist warn crit [biggest]
Options:
serverlist (required): one or more server names, coma-separated
warn (required): warning offset in seconds, can be partial
crit (required): critical offset in seconds, can be partial
biggest (optional): if multiple servers, else use default least offset
Example:
cscript /NoLogo check_time.vbs myserver1,myserver2 0.4 5 biggest
但是在运行时出现以下错误:
C:\Program Files\NSClient++\scripts>cscript //NoLogo check_time.vbs 0.asia.pool.ntp.org 20 50
C:\Program Files\NSClient++\scripts\check_time.vbs(53, 1) Microsoft VBScript run
time error: Invalid procedure call or argument
截图:
手动执行w32tm
仍然可以正常运行:
这可能是什么原因?
答案 0 :(得分:0)
在尝试使用之前,没有检查以确保此结构存在且正确。
我的假设是regexp调用无法找到匹配的内容,大概是因为输入字符串不是预期的格式。您可以在该行之前输出strOutput
的内容以查看它包含的内容 - 它可以是与正则表达式设计的不同的本地化形式的日期/时间表示。您还可以在每次调用input
后输出objProc.StdOut.ReadLine
的内容 - 这会显示对w32tm.exe
的调用是否返回了脚本跳过的有用错误消息,即只是在一切顺利时寻找返回的值,忽略不同输出的可能性。
答案 1 :(得分:0)
罪魁祸首是/nowarn
参数:
w32tm /monitor /nowarn /computers:0.asia.pool.ntp.org
The following arguments were unexpected: /nowarn
Exiting with error 0x80070057
从脚本中删除它,现在它可以工作:
cscript //NoLogo check_time.vbs 0.uk.pool.ntp.org 20 50
NTP OK: Offset -2.4262131 secs|'offset'=-2.4262131s;20;50;