WSHでリモートスクリプト起動時エラー
□やりたいこと
2台のXP環境で、WSHを使用してリモートスクリプトを実行させたい
(ローカルサーバAからリモートサーバBでJBSを実行)
□事象
サーバAのVBS(rmt_local.vbs)を起動したところ、
CreateScript実行時に以下のエラーとなります。
【エラーメッセージ】
429 ActiveX コンポーネントはオブジェクトを作成できません。
□質問
原因と対応方法を知りたい。
下記の設定以外になにが影響しているのか?
□環境
【ローカルサーバA】
OS:WindowsXP Professional Version 2002 SP3
WSH:Version5.8
ドメイン:WORKGROUP
【リモートサーバB】
OS:WindowsXP Professional Version 2002 SP3
WSH:Version5.8
ドメイン:WORKGROUP
【スクリプト配置】
ローカルサーバAのC:\TESTにのみスクリプト(1)と(2)を格納している
リモートサーバBにはC:\TESTのフォルダのみ作成している
□設定関連
●ローカルとリモートで設定
ファイアウォール設定(DCOM、wsdcript.exeを通す)
ドメインプロファイルの設定でリモート管理の例外を許可
実行ユーザをAdministratorsグループに追加
●ローカルのみ設定
COMセキュリティのアクセス許可で「ANONYMOUS LOGIN」のリモートアクセスを許可
●リモートのみ設定
レジストリ:HKEY\LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
の下のforceguest(文字列値)に0を設定
レジストリ:HKEY\LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings
の下にRemote(文字列値) を作成して1を設定
COMセキュリティのアクセス許可でEveryoneグループの「リモートアクセス」を許可
COMセキュリティの起動許可でAdminstratorsグループの「リモートからの起動」と
「リモートからのアクティブ化」を許可
================================================================
□スクリプト(1)
【rmt_local.vbs】
Option Explicit
On Error Resume Next
Dim objWshCtrl ' WshController オブジェクト
Dim strRemotePC ' リモートのコンピュータ名
Dim strScript ' 実行するスクリプトファイル
Dim objExecCmd ' 実行コマンド情報
Set objWshCtrl = WScript.CreateObject("WshController")
If Err.Number = 0 Then
strRemotePC = "B"
strScript = "rmt_remote.vbs"
Set objExecCmd = objWshCtrl.CreateScript(strScript, strRemotePC)
If Err.Number <> 0 Then
Set objExecCmd = Nothing
WScript.Echo "エラー: CreateScript " & Err.Description
WScript.Echo "異常終了しました。"
Else
WScript.Echo strRemotePC & " で " & strScript & " を実行します。"
objExecCmd.Execute
Do While objExecCmd.Status = 1
WScript.Sleep(100)
Loop
WScript.Echo "正常終了しました。"
End If
Else
WScript.Echo "エラー: CreateObject " & Err.Description
End If
Set objExecCmd = Nothing
Set objWshCtrl = Nothing
================================================================
□スクリプト(2)
【rmt_remote.vbs】
Option Explicit
On Error Resume Next
Dim objFSO ' FileSystemObject
Dim objFile ' ファイル書き込み用
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\TEST\test.log", 8, True)
objFile.WriteLine Now()
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing