Также при настройке режима выполнения удаленных сценариев нужно проверить значение параметра

HKLMSoftwareMicrosoftWindows Script HostSettingsIgnoreUserSettings (В)

Если значением этого параметра является 1, то параметр (Б) игнорируется и проверяется только значение параметра (А). Если же значением параметра (В) является 0, то WSH сначала проверяет параметр (Б) и только в случае его отсутствия принимается во внимание значение параметра (А).

Если удаленные сценарии нужно выполнять на машине с операционной системой Windows ХР, то на этой машине нужно перерегистрировать сервер wscript.exe с помощью следующей команды:

wscript.exe -regserver

Удаленные сценарии всегда запускаются с помощью сервера wscript.exe, причем в этих сценариях не поддерживается вывод на экран удаленного компьютера никаких элементов пользовательского интерфейса (не выводятся даже диалоговые окна с сообщениями о возникающих в ходе выполнения ошибках). Другими словами, в удаленных сценариях по умолчанию нельзя использовать методы WScript.Echo или WshShell.Popup (это может привести к непредсказуемым результатам).

Для примера рассмотрим сценарий RemoteShortcut.js (листинг 2.52), который создает ярлык в специальной папке AllUserDesktop (рабочий стол для всех пользователей). Предположим, что этот сценарий находится в корневом каталоге диска D:, а запустить сценарий необходимо на компьютере \Stand.

Листинг 2.52. Сценарий для запуска на удаленной машине (JScript)

/*****************************************************************/

/* Имя: RemoteShortcut.js                                        */

/* Описание: Создание ярлыка на рабочем столе                    */

/*****************************************************************/

var WshShell,MyShortcut,PathTarg,PathShortcut;

//Создаем объект WshShell

WshShell = WScript.CreateObject('WScript.Shell');

//Определяем путь к папке 'AllUsersDesktop' (рабочий стол

//всех пользователей)

PathShortcut = WshShell.SpecialFolders('AllUsersDesktop');

//Создаем объект-ярлык

MyShortcut = WshShell.CreateShortcut(PathShortcut+ '\From Remote WSH.lnk');

//Устанавливаем путь к файлу

PathTarg=WshShell.ExpandEnvironmentStrings('%windir%\notepad.exe');

MyShortcut.TargetPath = PathTarg;

MyShortcut.Save();  //Сохраняем ярлык

/*************  Конец *********************************************/

Для запуска сценария RemoteShortcut.js на удаленном компьютере \Stand нужно создать другой сценарий RunRemoteScript.js (листинг 2.53). Здесь вначале создается объект WshController:

Controller = WScript.CreateObject('WshController');

Затем мы получаем ссылку на экземпляр объекта WshRemote на машине \Stand, соответствующий сценарию с текстом, взятым из файла D:RemoteScript.js:

RemScript = Controller.CreateScript('D:\RemoteScript.js', 'stand');

Запускается удаленный сценарий с помощью метода Execute:

RemScript.Execute();

После этого нужно дождаться окончания работы сценария на удаленной машине, что делается путем контроля в цикле while свойства Status объекта WshRemote (значение свойства status, равное 2, говорит о том, что выполнение удаленного сценария завершено):

while (RemScript.Status != 2)

 //Цикл выполняется до завершения удаленного сценария

 WScript.Sleep(100); //Приостанавливаем сценарий на 0,1 сек

Метод Sleep объекта WScript вызывается в цикле для того, чтобы освободить процессор во время ожидания завершения удаленного сценария (листинг 2.53).

Листинг 2.53. Запуск удаленного сценария (JScript)

/********************************************************************/

/* Имя: 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.

Напомним, что для обработки событий объекта нужно в сценарии сначала создать экземпляр этого

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату