[リモートのエラー情報を取得する]
リモートコンピュータ上で、スクリプトファイルを実行し、エラーを発生させます。
(ファイルのパスを存在しないものに変更する)
ローカルコンピュータ上で、エラー情報を表示しています。
リモートでスクリプトを起動するには『HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings』に『Remote』という文字列値を値『1』で作成する必要があります。
悪用される可能性もありますので、公開サーバーには設定しない方が良いと思います。
【ソースコード】
[tips0096.vbs]
Option Explicit
On Error Resume Next
Dim objWshCtrl
Dim strRemotePC
Dim strScript
Dim objExecCmd
Set objWshCtrl = WScript.CreateObject("WshController")
If Err.Number = 0 Then
strRemotePC = "Comp01"
strScript = "rmt_test.vbs"
Set objExecCmd = objWshCtrl.CreateScript(strScript, strRemotePC)
WScript.ConnectObject objExecCmd, "Remote_"
WScript.Echo strRemotePC & " で " & strScript & " を実行します。"
objExecCmd.Execute
Do While objExecCmd.Status = 1
WScript.Sleep(1000)
Loop
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objExecCmd = Nothing
Set objWshCtrl = Nothing
Sub Remote_Start
WScript.Echo "リモートでスクリプトを開始しました。"
End Sub
Sub Remote_Error
WScript.Echo "リモートのスクリプトでエラーが発生しました。"
WScript.Echo " ソース:" & objExecCmd.Error.Source
WScript.Echo " 行番号:" & objExecCmd.Error.Line
WScript.Echo " 文字:" & objExecCmd.Error.Character
WScript.Echo " エラー行:" & Replace(objExecCmd.Error.SourceText, vbLf, "")
WScript.Echo " エラー内容:" & objExecCmd.Error.Description
WScript.Echo " エラー番号:" & objExecCmd.Error.Number
End Sub
Sub Remote_End
WScript.Echo "リモートのスクリプトが終了しました。"
End Sub
[rmt_test.vbs]
Option Explicit
Dim objFSO
Dim objFile
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\test\test\test.txt", 8, True)
objFile.WriteLine Now()
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
【実行結果】
C:\> cscript //NoLogo tips0096.vbs
Comp01 で rmt_test.vbs を実行します。
リモートでスクリプトを開始しました。
リモートのスクリプトでエラーが発生しました。
ソース:Microsoft VBScript 実行時エラー
行番号:7
文字:1
エラー行:objFile.WriteLine Now()
エラー内容:パスが見つかりません。
エラー番号:-2146828212
リモートのスクリプトが終了しました。