• ベストアンサー

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

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

  • th3kh
  • お礼率100% (1/1)

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

  • ベストアンサー
  • 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のサービスは開始状態にあります。 何か動作させるべきサービスなどがあるのでしょうか? 教えていただければありがたいです。

関連するQ&A

  • VBSについて教えてください。

    VBSを勉強したくて http://www.whitire.com/vbs/tips0001.html のサンプルコードを見たのですが Option Explicit WScript.Echo "Hello VBScript World" はどこに張り付ければいいのでしょうか? エクセルVBAの標準モジュールに Sub test() WScript.Echo "Hello VBScript World" End Sub として実行してみましたが WScriptの部分がコンパイルエラーになってしまいました。

  • WSH ~.vbs のデバッグについて

    お世話になります。 ~.vbsのデバッグについて教えてください。 スクリプトデバッガを使って1ステップづつ実行したいのですが、起動の仕方がわかりません。 手順を教えていただけないでしょうか? STOPステートメントでスクリプトデバッガが起動する旨MSのサイトに記述がありましたが、起動しません。 よろしくお願いします。

  • リモートでファイルを実行する方法について

    仕事の関係でクライアント(WindowsXP)端末からリモートで サーバー(Windows Server 2003)にあるCドライブの直下にある BATファイルを実行したいのですがそれを実現するには どうすればよいのかお教えください。 UNIXではrshでいうのがありますがWindowsのコマンドでそれに 見合うのはないと聞きました。VBSでもいいので実現する方法に ついてご教授ください。 よろしくお願いします。

  • コマンドプロンプトからリモートマシンのサービスを起動/停止する方法

    GUIでリモートマシンのサービスを起動/停止する場合は、「コンピュータの管理」でリモートマシンに接続すれば可能ですが、コマンドプロンプトから行うにはどうすればよろしいのでしょうか。 NET STOPコマンドやNET STARTコマンドは、自分のマシンのサービスを起動/停止はできますが、リモートマシンのはできません。 ご教授をお願いいたします。 ※OSはWIN2000以上です。

  • VBScript(WHS)でWMIを使ってリモートでvbsファイルを実行したい

    サーバAから、サーバBに置いてあるvbsファイル(Apache停止が書かれている)を実行して、サーバBのApacheを停止したいのですが、うまくいきません。 サーバBで単体でそのvbsファイルを実行すると、Apacheは正常に停止します。  戻り値は、0(プロセス完了)が帰ってきていて、接続はうまくいっているようなのですが、vbsファイルが実行されていないようです。  非常に困っておりまして、どなたか教えていただけないでしょうか? vbsファイルの実行のところが間違っているのかなと思うのですが・・・(今まだ会社にいないので、会社でのソースそのままではないですが、同じような感じです) -------------------------------------------- Option Explicit Dim strComputer Dim strUser Dim strPassword Dim strBAT ' ----------------------------------- ' 環境設定 ' ----------------------------------- strComputer = "サーバーB" strUser = "username" strPassword = "password" strBAT = "c:\hoge.bat" ' ----------------------------------- ' コマンド実行 ' ----------------------------------- Dim objWbemLocator Dim objWMIService Dim objWin32_Process Dim errReturn Dim intProcessID Const WbemAuthenticationLevelPktPrivacy = 6 ' リモートに接続 Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = objwbemLocator.ConnectServer _ (strComputer, "root\cimv2", strUser, strPassword) objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy ' Win32_Process クラスを生成 Set objWin32_Process = objWMIService.Get("Win32_Process") errReturn = objWin32_Process.Create _ ("cmd.exe /cscript C:\tmp\ApacheStop.vbs", Null, Null, intProcessID) WScript.Quit(errReturn ) もともとの要件は、機能ごとに分けたvbsファイル(Apache停止、Windows再起動、ファイルバックアップなど)を、各サーバで実行するというものです。その制御は、ひとつのバックアップサーバーで行います。

  • VBSからbat実行(WMI)して戻り値を取得する

    WSH初心者です。 WSH(remote.vbs)からWMI使用で別サーバのA.batを実行しているのですが、 A.batの戻り値はどのように取得すれば良いのでしょうか? -■remote.vbs(一部抜粋)------------------------------------------ ' #WMI に接続 Wim32_Process クラスを取り出す Set clsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}" & "!" & リモート先PC & "Win32_Process") ' #プロセスの作成 lngResult = clsProcess.Create(A.bat, null, null, processId) -------------------------------------------------------------- -■A.bat------------------------------------------ exit /B %RetCode% ------------------------------------------------- A.batで返している%RetCode%の値をremote.vbs側で取得したいのです。 どなたかご存じでしたらご教授の程よろしくお願い致します。

  • VBScriptの実行完了を待ってからDOSのプログラムを実行したい。

    DOSのバッチからVBScriptを実行しています。 VBScriptの実行が完了してから次のDOSコマンドを実行させたいのですが、 START /WAIT SAMPLE.vbs では 実行完了を待ってくれないみたいです。 どうしたらよいでしょうか?ご教授お願いいたします。

  • cygwin上でvbscirptを実行する方法

    cygwinのコンソール画面で、hello.vbsというvbsファイルを起動し、vbスクリプトを実行する イメージです。 実現したいことは以下です。 UNIXサーバから、rshコマンドで、Windowsサーバのシェル(cygwin上)を実行する。 Windowsサーバのシェルは、さらに、vbscirpt(拡張子.vbs)を内部で実行する。 本来は、Windowsサーバのシェルのみで実装したいのですが、vbscriptで動作させる方法 しか分からないので、上記方法をとりたいと思っています。

  • VBSでDBに接続する方法

    VBS(WSH)のサンプルソースなどを検索しているのですが、 見つからなくてちょっと困っておりますので、 質問です。 よくSQL Server2000のVBSのサンプルソースはあるのですが、 SQL Server 2005に接続およびSelect文程度の簡単な実行文を VBSで作成したいのですが、 どこかにありませんか??

  • asp内に記述したvbsでEXCELを起動したい

    こんにちは。 asp内に記述したvbsで、EXCELを起動したいのですが、どうしてもうまくいきません。 <html> <head> <SCRIPT language='VBScript'> <!-- MsgBox "Hello !" With CreateObject("Excel.Application") .Visible = True .Workbooks.Add.ActiveSheet.Range("A1").Value = "Hello !" End With --> </SCRIPT> </head> <body> てすと </body> </html> vbsの部分だけを、asp内記述ではなくvbsファイルで実行すれば問題なくEXCELが起動できます。 また、asp内に記述したメッセージのHello!は出てくるのでプログラムaspのプrグラム自体は動いています。 このことから、間違いはないと思うのですがどうしても起動できません。 どなたか、原因が分かる方はいらっしゃらないでしょうか?

専門家に質問してみよう