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
的截图:
手动执行w32tm
仍然正常工作:
什么可能的原因呢?
罪魁祸首是/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;
不知道为什么我的'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
的呼叫是否返回了一条有用的错误消息,该消息正在被所有正常并且忽略时返回的值所查找的脚本跳过输出不同的可能性。
这应该真正在,所以要问。 – Iain
绝对是更多的SO问题国际海事组织。 –