cscript - 运行vbs文件时无效的过程调用或参数

cscript - 运行vbs文件时无效的过程调用或参数

问题描述:

我一直在尝试使用check_time.vbs来检查Windows时间。cscript - 运行vbs文件时无效的过程调用或参数

这里的脚本: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 

的截图:

enter image description here

手动执行w32tm仍然正常工作:

enter image description here

什么可能的原因呢?

+0

这应该真正在,所以要问。 – Iain

+0

绝对是更多的SO问题国际海事组织。 –

罪魁祸首是/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; 
+0

不知道为什么我的'w32tm'版本不提供'/ nowarn'参数('w32tm /?| findstr nowarn'不返回任何内容)。我正在使用Windows Server 2003,版本[5.2.3790],Service Pack 2。 – quanta

IIRC(53,1)表示错误在第53行。此时,它期望与至少一个项目(索引0)和一个子匹配的正则表达式匹配(即对象在在它的数组中的位置0有一个数组属性称为子匹配与至少一个项目。

它不检查,以确保这种结构是试图使用它之前存在和正确的。

我的假设是,正则表达式调用无法找到任何匹配的内容,大概是因为输入字符串不是预期的格式。您可以在该行之前输出strOutput的内容以查看它包含的内容 - 它可能是日期/以正则表达式为基础设计的不同的本地化形式。您也可以在每次拨打objProc.StdOut.ReadLine后输出input的内容 - 这会告诉您w32tm.exe的呼叫是否返回了一条有用的错误消息,该消息正在被所有正常并且忽略时返回的值所查找的脚本跳过输出不同的可能性。