我有以下脚本,它使用硬编码值来检查 SQL 性能计数器
暗淡 objWMIService 暗淡 colItems 暗淡 objItem 暗淡 objProperty strComputer =“。” 设置 objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 设置 colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_MSSQLSERVER_SQLServerBufferManager", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) 对于 colItems 中的每个 objItem 如果 objItem.FreeliststallsPersec > 0 那么 Wscript.Echo“服务状态:严重” Wscript.Quit(2) 别的 Wscript.Echo "服务状态:OK" Wscript.Quit(0) 万一 下一个
但是如果我尝试将一些值作为变量传递以使脚本更加灵活/有用,如下所示
暗淡 objWMIService 暗淡 colItems 暗淡 objItem 暗淡 objProperty 暗淡 strPerfCounterQuery 暗淡 strPerfCounter 暗淡intWarnValue 暗淡intCritValue 暗淡 strWMIQuery strComputer =“。” strPerfCounterQuery = Wscript.Arguments.Item(0) strPerfCounter = Wscript.Arguments.Item(1) intCritValue = Wscript.Arguments.Item(2) 设置 objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") strWMIQuery = """SELECT * FROM " & strPerfCounterQuery & """" & ", " & """WQL""" & ", " & "wbemFlagReturnImmediately + wbemFlagForwardOnly" 设置 colItems = objWMIService.ExecQuery(strWMIQuery) 对于 colItems 中的每个 objItem 如果 objItem.& strPerfCounter > & intCritValue Then Wscript.Echo“服务状态:严重” Wscript.Quit(2) 别的 Wscript.Echo "服务状态:OK" Wscript.Quit(0) 万一 下一个
objWMIService.ExecQuery(strWMIQuery) 返回一个空值(尽管如果我回显查询,它似乎与硬编码的版本字符串匹配)
和 objItem。似乎也不喜欢被赋予一个变量来使用
我使用以下命令从命令行调用脚本:
cscript perfmon-greater Win32_PerfFormattedData_MSSQLSERVER_SQLServerBufferManager FreeliststallsPersec 0
我正在尝试的可能吗?有人有我可以参考的例子吗?
非常感谢任何信息
谢谢