技術情報
WshRemoteオブジェクト
リモートコンピュータ上で実行するスクリプトを扱うオブジェクトです。
WshControllerオブジェクトのCreateScriptメソッドが返すオブジェクトです。

[オブジェクトの生成]
Set オブジェクト変数 = WshControllerオブジェクト.CreateScript("スクリプトパス", "リモートコンピュータ名")

プロパティ
  • Statusプロパティ
  • 実行したスクリプトのステータス情報を取得します。

    書式 "WshRemoteオブジェクト".Status
    実行中のスクリプトの状態によって、以下のいずれかの値となります。
    0:スクリプト実行待ち
    1:スクリプト実行中
    2:スクリプト実行完了

    (例)
    'WshControllerオブジェクトを生成し、
    'リモートコンピュータ Remote01 で
    '実行するスクリプトオブジェクトを生成します
    Dim oController, oScript
    Set oController = WScript.CreateObject("WSHController")
    Set oScript = oController.CreateScript("C:\Temp\Test.vbs", "Remote01")
    'リモートコンピュータでスクリプトを実行します
    oScript.Execute
    'リモートでの実行が完了するまで待ちます
    'スクリプトのステータスが「2」の場合、
    '処理が完了していることを表します
    Do While oScript.Status <> 2
      Wscript.Sleep 10
    Loop

  • Errorプロパティ
  • リモートコンピュータでスクリプト実行中に途中終了した場合のエラー情報を格納したオブジェクトを取得します。

    書式 "WshRemoteオブジェクト".Error

    [備考]
    エラー情報を格納したオブジェクトはエラー発生時にハンドリングしなければならないため、通常エラーイベントと連動するようにして使用します。

    (例)
    'エラーオブジェクトを取得します
    'WshControllerオブジェクトを生成し、
    'リモートコンピュータ Remote01 で
    '実行するスクリプトオブジェクトを生成します
    Dim oController, oScript
    Set oController = WScript.CreateObject("WSHController")
    Set oScript = oController.CreateScript("C:\Temp\Test.vbs", "Remote01")
    'エラーイベントとの関連づけを行います
    WScript.ConnectObject oScript, "Rt_"
    'リモートコンピュータでスクリプトを実行します
    oScript.Execute
    'リモートでの実行が完了するまで待ちます
    'スクリプトのステータスが「2」の場合、
    '処理が完了していることを表します
    Do While oScript.Status <> 2
      Wscript.Sleep 10
    Loop

    'エラー発生時のイベントを定義します
    Sub Rt_Error()
      WScript.Echo oScript.Error.Description
    End Sub


メソッド
  • Executeメソッド
  • リモートコンピュータでスクリプトを実行します。

    書式 "WshRemoteオブジェクト".Execute

    (例)
    'WshControllerオブジェクトを生成し、
    'リモートコンピュータ Remote01 で
    '実行するスクリプトオブジェクトを生成します
    Dim oController, oScript
    Set oController = WScript.CreateObject("WSHController")
    Set oScript = oController.CreateScript("C:\Temp\Test.vbs", "Remote01")
    'リモートコンピュータでスクリプトを実行します
    oScript.Execute
    'リモートでの実行が完了するまで待ちます
    'スクリプトのステータスが「2」の場合、
    '処理が完了していることを表します
    Do While oScript.Status <> 2
      Wscript.Sleep 10
    Loop

  • Terminateメソッド
  • リモートコンピュータで実行中のスクリプトを終了します。

    書式 "WshRemoteオブジェクト".Terminate

    (例)
    'WshControllerオブジェクトを生成し、
    'リモートコンピュータ Remote01 で
    '実行するスクリプトオブジェクトを生成します
    Dim oController, oScript, IntCount
    Set oController = WScript.CreateObject("WSHController")
    Set oScript = oController.CreateScript("C:\Temp\Test.vbs", "Remote01")
    'リモートコンピュータでスクリプトを実行します
    oScript.Execute
    'リモートでの実行が完了するまで待ちます
    'スクリプトのステータスが「2」の場合、
    '処理が完了していることを表します
    '1000秒待っても完了しない場合は、終了します
    IntCount = 0 Do While oScript.Status <> 2
    WScript.Sleep 1000
    IntCount = IntCount + 1
    If IntCount >= 1 Then
    oScript.Terminate
    WScript.Quit()
    End If
    Loop


イベント
  • Startイベント
  • リモートコンピュータでスクリプトの実行が開始されたときに発生します。
    イベントが発生したときに実行するプロシージャは、リモートコンピュータで実行するスクリプト内に記述するのではなく、リモートコンピュータでそのスクリプトを実行するためにローカルコンピュータで記述する実行操作用スクリプト内で記述します。

    「Sub "任意文字列_"Start()」という形式でイベント処理用のプロシージャを定義します。
    WshControllerオブジェクトのCreateScriptメソッドの引数2に"任意文字列_"を指定します。

  • Endイベント
  • リモートコンピュータでスクリプトの実行が完了したときに発生します。
    イベントが発生したときに実行するプロシージャは、リモートコンピュータで実行するスクリプト内に記述するのではなく、リモートコンピュータでそのスクリプトを実行するためにローカルコンピュータで記述する実行操作用スクリプト内で記述します。

    「Sub "任意文字列_"End()」という形式でイベント処理用のプロシージャを定義します。
    WshControllerオブジェクトのCreateScriptメソッドの引数2に"任意文字列_"を指定します。

  • Errorイベント
  • リモートコンピュータでスクリプトの実行中にエラーが発生したときに発生します。
    イベントが発生したときに実行するプロシージャは、リモートコンピュータで実行するスクリプト内に記述するのではなく、リモートコンピュータでそのスクリプトを実行するためにローカルコンピュータで記述する実行操作用スクリプト内で記述します。

    「Sub "任意文字列_"Error()」という形式でイベント処理用のプロシージャを定義します。
    WshControllerオブジェクトのCreateScriptメソッドの引数2に"任意文字列_"を指定します。