我有以下脚本,它使用硬编码值来检查 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
我正在尝试的可能吗?有人有我可以参考的例子吗?
非常感谢任何信息
谢谢