【问题标题】:cscript - Invalid procedure call or argument when running a vbs filecscript - 运行 vbs 文件时过程调用或参数无效
【发布时间】:2011-11-18 08:18:27
【问题描述】:

我一直在尝试使用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 仍然可以正常工作:

这可能是什么原因?

【问题讨论】:

  • 这真的应该在 SO 上问。
  • IMO 绝对是一个 SO 问题。

标签: windows-server-2003 nagios vbscript


【解决方案1】:

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

在尝试使用它之前,它不会检查以确保该结构存在且正确。

我的假设是 regexp 调用找不到任何匹配的内容,大概是因为输入字符串不是预期的格式。您可以在该行之前输出strOutput 的内容以查看它包含的内容 - 它可能是与正则表达式设计不同的本地化形式的日期/时间表示。您还可以在每次调用objProc.StdOut.ReadLine 之后输出input 的内容 - 这将显示对w32tm.exe 的调用是否返回了一个有用的错误消息,该错误消息被正在寻找返回值的脚本跳过当一切都很好并忽略不同输出的可能性。

【讨论】:

    【解决方案2】:

    罪魁祸首是/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。
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多