• ベストアンサー

VBSからリモートサーバのサービスを操作したい

VBScript初心者なので単純な質問かもしれませんが、どなたか教えていただけないでしょうか? VBS内からリモートサーバのサービスの停止/起動(net stop/start)を実行したいと考えています。 WMIを利用すれば実現できるらしいのですが、どのように記述すればいいのかが分かりません。 スクリプトのサンプルなどがあれば教えていただけないでしょうか? 出来ればどの部分を変更すれば使えるかも教えていただけると助かります。。。

質問者が選んだベストアンサー

  • ベストアンサー
  • med2dic
  • ベストアンサー率77% (21/27)
回答No.1

昔似たようなスクリプトを作ったので抜粋して貼り付けます。 必要に応じてエラーやログ出力などの処理を追加してください。 コンピュータ名、ユーザ名、パスワード、ドメイン名、サービス名を変更してください。 Option Explicit Dim objWbemLocator Dim objWMIService Dim objWin32_Process Dim objWsShell Dim strComputer Dim strUser Dim strPassword Dim strDomain Dim strCmd Dim intProcessID Dim intReturn Dim lngRet Const WbemAuthenticationLevelPktPrivacy = 6 '接続先 strComputer = "コンピュータ名" strUser = "ユーザ名" strPassword = "パスワード" strDomain = "ドメイン名" Set objWsShell = CreateObject("WScript.Shell") '応答ありは"0"、なしは"1"が返る strCmd = "ping -n 1 -w 500 " & strComputer lngRet = objWsShell.Run(strCmd, 0, True) If lngRet = 0 Then 'リモート接続 Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") If strDomain <> "" Then Set objWMIService = objwbemLocator.ConnectServer(strComputer, "root\cimv2", strUser & "@" & strDomain, strPassword) Else Set objWMIService = objwbemLocator.ConnectServer(strComputer, "root\cimv2", strUser, strPassword) End If objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy 'Win32_Process クラスを生成 Set objWin32_Process = objWMIService.Get("Win32_Process") '実行コマンド strCmd = "net stop ""サービス名""" intReturn = objWin32_Process.Create(strCmd, Null, Null, intProcessID) ' 0:プロセスの生成に成功 ' 2:アクセスが拒否された ' 3:コマンド実行権限が不足している ' 8:不明なエラー ' 9:コマンドのパスが見つからない '21:指定したパラメータが誤っている If intReturn = 0 Then '成功 Else '失敗 End If Else '端末が起動されていない End If WScript.Quit

th3kh
質問者

お礼

med2dic様。 補足で追記させていただいた件は、サーバ環境で実行したら正常動作しました。 スクリプトを提供いただいてありがとうございました。 大変助かりました。

th3kh
質問者

補足

med2dic様。 返事が遅くなり申し訳ありません。 スクリプトありがとうございます。 今実際に試験環境(Windows XP同士)で試してみているのですが、以下行でエラーが発生してしまいます。 Set objWMIService = objwbemLocator.ConnectServer(strComputer, "root\cimv2", strUser & "@" & strDomain, strPassword) この行を実行する際に、 エラー : RPCサーバを利用できません。 コード : 800706BA ソース : SWbemLocator が出力されてしまいます。 相手方のPCでRPCサービスやWMIのサービスは開始状態にあります。 何か動作させるべきサービスなどがあるのでしょうか? 教えていただければありがたいです。