Windows XP マシンから別の Windows XP マシンのプログラムを手軽に実行したかったので、いろいろ調べてたら、
CX's MEMO でナイスな vbscript を発見!
何かをインストールしたりする必要ないので、とてもお手軽。
- xstart.vbs
Set args = Wscript.Arguments If args.Count < 1 Then Wscript.StdOut.WriteLine "xstart <command> [<computer>]" Else '--- コマンド指定 strCommand = args(0) '--- コンピュータ指定 strComputerPath = "" If args.Count = 2 Then strComputer = args(1) If InStr(strComputer, "\\") = 1 Then strComputer = Mid(strComputer, 3) End If strComputerPath = "\\" & strComputer & "\root\cimv2:" End If '--- WMI に接続 Wim32_Process クラスを取り出す Set clsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}" _ & "!" & strComputerPath & "Win32_Process") '--- プロセスの作成 lngResult = clsProcess.Create(strCommand) Wscript.StdOut.WriteLine strCommand & " :" & lngResult End If
- 実行してみる
- host01 から host02 の notepad を実行する。
> hostname host01 >cscript //Nologo xstart.vbs notepad.exe host02 notepad.exe :0
-
- host02 の[Windows タスクマネージャ]>[プロセス]を確認すると、notepad.exe が起動している
追記(2009/08/31):
>cscript //Nologo xstart.vbs notepad.exe host1 notepad.exe :0 >cscript //Nologo xstart.vbs notepad.exe host1 notepad.exe :0 >cscript //Nologo xstart.vbs notepad.exe host1 notepad.exe :0 >cscript //Nologo xstart.vbs notepad.exe host1 notepad.exe :8
何度も同じプログラムを実行するとエラーになる。
戻り値 8 はなんだ?
コマンドの実行結果ではなく、単純にプロセスを生成できたかどうかの結果を表す
マニアックなプログラミング備忘録
・ 0:プロセスの生成に成功
(以下、プロセスの生成に失敗)
・ 2:アクセスが拒否された
・ 3:コマンド実行権限が不足している
・ 8:不明なエラー
・ 9:コマンドのパスが見つからない
・21:指定したパラメータが誤っている
不明なエラー。。。
ログとか取れないのかな。
http://blogs.technet.com/jpilmblg/archive/2009/06/11/wmi-troubleshoot-1-wmi-xp-2003-vista-2008.aspx
- [スタート]-[ファイル名を指定して実行(R)..]で、「wmimgmt.msc」と入力して[OK]をクリックする。
- [操作]-[プロパティ]-[ログの収集]-[ログレベル]で、[詳細]を選択して[OK]をクリックする。
- ログの出力先は [操作]-[プロパティ]-[ログの収集]-[ログ ファイルの属性]-[場所] で確認することができる。
詳細なログを取得するよう設定したので、再度エラーを発生させる。
>cscript //Nologo xstart.vbs notepad.exe host1 notepad.exe :0 ... >cscript //Nologo xstart.vbs notepad.exe host1 notepad.exe :8
C:\WINDOWS\system32\wbem\Logs\wbemprox.log を確認すると、
(Mon Aug 31 15:16:28 2009.23203171) : GetUserDefaultLCID failed, restorting to system verion
ってエラーメッセージが出力されている。
ぐぐってみると、いろいろでてくる。
Windows Sysinternals Forums have moved...
Windows Sysinternals Forums have moved...
今日はここまでにしておく。