ハードコーディングされた値を使用して SQL perfmon カウンターをチェックする次のスクリプトがあります。
Dim objWMIService Dim colItems Dim objItem Dim objProperty strComputer = "." Set 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) 終了条件 次
しかし、以下に示すように、スクリプトをより柔軟/便利にするために、いくつかの値を変数として渡そうとすると
Dim objWMIService Dim colItems Dim objItem Dim objProperty Dim strPerfCounterQuery Dim strPerfCounter Dim intWarnValue Dim intCritValue Dim strWMIQuery strComputer = "." strPerfCounterQuery = Wscript.Arguments.Item(0) strPerfCounter = Wscript.Arguments.Item(1) intCritValue = Wscript.Arguments.Item(2) Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") strWMIQuery = """SELECT * FROM " & strPerfCounterQuery & """" & ", " & """WQL""" & ", " & "wbemFlagReturnImmediately + wbemFlagForwardOnly" colItems = objWMIService.ExecQuery(strWMIQuery) を設定します。 colItems の各 objItem If objItem.& strPerfCounter > & intCritValue Then Wscript.Echo "サービス ステータス: 重大" Wscript.Quit(2) そうしないと Wscript.Echo "サービス ステータス: OK" Wscript.Quit(0) 終了条件 次
objWMIService.ExecQuery(strWMIQuery) は null 値を返します (ただし、クエリをエコーすると、ハードコードされたバージョン文字列と一致するようです)
そしてobjItem。また、使用する変数が与えられるのが好きではないようです
以下を使用して、コマンド ラインからスクリプトを呼び出します。
cscript perfmon-greater Win32_PerfFormattedData_MSSQLSERVER_SQLServerBufferManager FreeliststallsPersec 0
私が試みていることは可能ですか?誰かが私が参照できる例を持っていますか?
どんな情報でも大歓迎です
ありがとう