Андрей Попов - Windows Script Host для Windows 2000/XP
/********************************************************************/
/* РРјСЏ: RunRemoteScript.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                   */
/* Описание: Запуск удаленного сценария                            */
/********************************************************************/
var Controller, RemScript; //Объявляем переменные
//Создаем объект WshController
Controller = WScript.CreateObject("WshController");
//Создаем сценарий на удаленной машине (объект WshRemote)
RemScript = Controller.CreateScript("D:\RemoteScript.js", "stand");
RemScript.Execute(); //Запускаем удаленный сценарий
WScript.Echo("Удаленный сценарий запущен");
while (RemScript.Status != 2)
 //Цикл выполняется до завершения удаленного сценария
 WScript.Sleep(100); //Приостанавливаем сценарий на 0,1 сек
WScript.Echo("Выполнение удаленного сценария завершено");
/************* Конец *********************************************/
В листинге 2.54 приведен аналог сценария RunRemoteScript.js на языке VBScript.
Листинг 2.54. Запуск удаленного сценария (VBScript)'********************************************************************
' РРјСЏ: RunRemoteScript.vbs
' Язык: VBScript
' Описание: Запуск удаленного сценария
'********************************************************************
Option Explicit
Dim Controller, RemScript ' Объявляем переменные
' Создаем объект WshController
Set Controller = WScript.CreateObject("WshController")
' Создаем сценарий на удаленной машине (объект WshRemote)
Set RemScript = Controller.CreateScript("D:\RemoteScript.js", "stand")
RemScript.Execute ' Запускаем удаленный сценарий
WScript.Echo "Удаленный сценарий запущен"
While RemScript.Status <> 2
 ' Цикл выполняется до завершения удаленного сценария
 WScript.Sleep 100 ' Приостанавливаем сценарий на 0,1 сек
Wend
WScript.Echo "Выполнение удаленного сценария завершено"
'************* Конец *********************************************
Контролировать ход выполнения удаленных сценариев можно не только путем анализа свойства Status, но и с помощью обработки событий Start (запуск сценария), Error (ошибка при выполнении сценария) и End (завершение работы сценария) объекта WshRemote; соответствующие примеры сценариев на языках JScript и VBScript приведены в листингах 2.55 и 2.56.
Напомним, что для обработки событий объекта нужно в сценарии сначала создать экземпляр этого объекта, а затем соединиться с ним при помощи метода ConnectObject, указав нужный префикс для функций-обработчиков:
Controller = WScript.CreateObject("WshController");
RemScript = Controller.CreateScript("D:\RemoteScript.js ", "stand");
WScript.ConnectObject(RemScript, "RemoteScript_");
Затем в тексте сценария описываются функции RemoteScript_Start, RemoteScript_Error и RemoteScript_End, управление в которые будет передаваться при наступлении соответствующих событий.
Листинг 2.55. Обработка событий объекта WshRemote (JScript)/**********************************************************************/
/* РРјСЏ: RemoteEvents.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                     */
/* Описание: Обработка событий, возникающих при выполнении удаленного */
/*          сценария                                                */
/**********************************************************************/
var Controller,RemScript,IsQuit; //Объявляем переменные
//Создаем объект WshController
Controller = WScript.CreateObject("WshController");
//Создаем сценарий на удаленной машине (объект WshRemote)
RemScript = Controller.CreateScript("D:\RemoteScript.js ", "stand");
//Устанавливаем соединение с объектом WshRemote
WScript.ConnectObject(RemScript, "RemoteScript_");
RemScript.Execute(); //Запускаем удаленный сценарий
IsQuit = false;
while (!IsQuit) WScript.Sleep(100); //Приостанавливаем сценарий на 0,1 сек
WScript.Quit(); //Выходим из сценария
/*************** Функции-обработчики событий ***********************/
function RemoteScript_End() { //Событие End
 WScript.Echo("Выполнение удаленного сценария завершено");
В IsQuit = true;
}
function RemoteScript_Error() { //Событие Error
 //Выводим на экран описание возникшей ошибки
 WScript.Echo("Ошибка при выполнении удаленного сценария: " +
В RemScript.Error.Description);
В IsQuit = true;
}
function RemoteScript_Start() { //Событие Start
 WScript.Echo("Удаленный сценарий запущен");
}
/************* Конец *********************************************/
Листинг 2.56. Обработка событий объекта WshRemote (VBScript)'********************************************************************
' РРјСЏ: RemoteEvents.vbs
' Язык: VBScript
' Описание: Обработка событий, возникающих при выполнении удаленного
'          сценария
'********************************************************************
Option Explicit
Dim Controller,RemScript,IsQuit ' Объявляем переменные
' Создаем объект WshController
Set Controller = CreateObject("WshController")
' Создаем сценарий на удаленной машине (объект WshRemote)
Set RemScript = Controller.CreateScript("D:RemoteScript.js ", "stand")
' Устанавливаем соединение с объектом WshRemote
WScript.ConnectObject RemScript, "RemoteScript_"
RemScript.Execute ' Запускаем удаленный сценарий
IsQuit = False
While Not IsQuit
 WScript.Sleep 100 ' Приостанавливаем сценарий на 0,1 сек
Wend
WScript.Quit ' Выходим из сценария
'*************** Функции-обработчики событий ***********************
Function RemoteScript_End() ' Событие End
 WScript.Echo "Выполнение удаленного сценария завершено"
В IsQuit = True
End Function
Function RemoteScript_Error() ' Событие Error
 ' Выводим на экран описание возникшей ошибки
 WScript.Echo "Ошибка при выполнении удаленного сценария: " & _
В RemScript.Error.Description
В IsQuit = True
End Function
Function RemoteScript_Start() ' Событие Start