プロセスを停止するスクリプト(WMI)

プロセスを停止させるスクリプトを作ってみました。

//*****************************************//
// プロセス停止用スクリプト(WMI使用)       //
//                                         //
// ・引数                                 //
//  ProcessName - 削除したいプロセス名   //
//   (複数ある場合はスペースで区切る)     //
//                                         //
// [usage]                                //
//  WScript.exe ps.js CMD.EXE DELPHI.EXE //
//*****************************************//

// Shellオブジェクト //
var WshShell      = WScript.CreateObject("WScript.Shell")  ;

// 対象コンピュータ名(今は自分自身) //
var strComputer   = ".";

// WMIサービスオブジェクト
var objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\" +
                              strComputer + "\\root\\cimv2");
var pr , i ;

// 引数チェック //
if ( WScript.Arguments.Length == 0 )
{
	WScript.Echo(
		"引数が足りません \n" +
		" ・引数\n" +
		"  ProcessName - 削除したいプロセス名を指定してください\n"     +
		"  (複数ある場合はスペースで区切って複数指定してください)\n\n" +
		" [usage]\n" +
		"  WScript.exe ps.js CMD.EXE DELPHI.EXE"
	);
	WScript.Quit(-1);
}

try
{
	for ( i = 0 ; i <= WScript.Arguments.Length - 1 ; i++ )
	{
		while ( true )
		{
			pr = new Enumerator(
				objWMIService.ExecQuery(
				"SELECT * FROM Win32_Process Where Name = '" + WScript.Arguments(i) + "'"
				)
			     );
			if ( pr.atEnd() == false )
			{
				for ( ; !pr.atEnd() ; pr.moveNext() )
				{
					pr.item().Terminate();
				}
				continue;
			}
			else
			{
				break;
			}
		}
	}
}
catch ( e )
{
	WshShell.LogEvent(1 , "処理失敗:\n[原因]\n" + e.Description );
}

unix系だとpsとgrepawkとkill使えば出来そうなんですが、Windowsだと気軽に出来るのがなかったので作ってみました。WMIって便利。