vbscriptを利用してサービスの状態を表示する
Windows XPでサービスの状態をコマンドラインから簡単に参照するには
sc query servicename
で可能だが、サービスの状態以外の情報も表示されてしまう。
>sc query eventlog SERVICE_NAME: eventlog TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (NOT_STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
そこでvbscriptでサービスの状態のみを表示するスクリプトを書いてみた。
Option Explicit ' コマンドライン引数を取得 Dim objArgs Dim servicename Set objArgs = WScript.Arguments If objArgs.Count <> 1 Then WScript.Quit(1) servicename = objArgs(0) ' サービス状態を取得 Dim objWMIService, colRunningServices, objService Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service where displayname='" & servicename & "'") If colRunningServices.Count = 0 Then WScript.Echo servicename & " [ not found ]" End If For Each objService in colRunningServices Wscript.Echo objService.DisplayName & " [" & objService.State & "]" Next
このファイルをsvstat.vbsなどの名前で保存し、実際に利用するときには、
> cscript //Nologo svstat.vbs "event log"
として実行する。