Перейти на главную страничку сайта (список статей, файлы для скачивания)
С помощью объектов WshController и WshRemote сценарии Windows Script Host можно запускать не только на локальной машине, но и на удалённых компьютерах, имеющихся в сети. При этом исполняемый сценарий не будет явно копироваться на жёсткий диск удалённого компьютера, а работа будет происходить по протоколу DCOM (Distributed COM). Примеры кода WSH в настоящей статье будут приводиться на языке VBScript.
Для успешного запуска должны быть соблюдены следующие требования:
wscript.exe -regserverэта команда зарегистрирует wscript.exe как "внепроцессный" COM-сервер (out of process COM server), который работает в процессе, отличном от клиентского;
Объект WshController создаётся следующим образом:
Set oCtrl = CreateObject("WshController")
Объект WshController имеет единственный метод CreateScript(CommandLine, [MachineName]), который возвращает указатель на объект WshRemote, с помощью которого можно контролировать состояние удалённого сценария и управлять его выполнением. Первый параметр содержит путь к файлу относительно локальной машины (файл может находиться на каком-либо сетевом ресурсе; это делает возможным, работая на одном компьютере, загружать скрипт с другого и выполнять его на третьем компьютере).
Свойства объекта WshRemote:
| Status | Состояние асинхронно работающего сценария. Возможные значения:
|
| Error | Ссылка на объект WshRemoteError, содержащий информацию об ошибках. |
Методы объекта WshRemote:
| Execute() | Запускает сценарий. |
| Terminate() | Прерывает исполнение сценария. |
События объекта WshRemote:
| Start | Начало выполнения сценария. |
| Error | Аварийное завершение выполнения сценария. |
| End | Нормальное или аварийное завершение выполнения сценария. |
Свойства объекта WshRemoteError (методов у него нет):
| Description | Краткое описание ошибки (может быть пустым). |
| Line | Номер строки сценария (если его нельзя определить, содержит 0). |
| Character | Номер символа в строке (если его нельзя определить, содержит 0). |
| Number | Код ошибки (число). |
| SourceText | Строка сценария (если её нельзя определить, содержит 0). |
| Source | Название COM-объекта — источника ошибки. |
В качестве примера рассмотрим скрипт lnk.vbs, создающий ярлык на Рабочем столе для всех пользователей:
Set WshShell = CreateObject("WScript.Shell")
PathShortcut = WshShell.SpecialFolders("AllUsersDesktop")
Set Shortcut = WshShell.CreateShortcut(PathShortcut & "\Remote.lnk")
Target = WshShell.ExpandEnvironmentStrings("%windir%\notepad.exe")
Shortcut.TargetPath = Target
Shortcut.Save()
Запустим этот скрипт на удалённой машине \\home:
Set oCtrl = CreateObject("WshController")
Set oScript = oCtrl.CreateScript("C:\Temp\Testing\lnk.vbs", "home")
WScript.ConnectObject oScript, "Remote_" ' подключаемся к событиям
oScript.Execute()
IsQuit = False
While Not IsQuit
Wscript.Sleep 100
Wend
'========================================================================================
Function Remote_End()
Wscript.Echo "Выполнение удалённого сценария завершено."
IsQuit = True
End Function
Function Remote_Error()
Wscript.Echo oScript.Error.Description
IsQuit = True
End Function
Function Remote_Start()
Wscript.Echo "Начато выполнение удалённого сценария."
End Function
См. также статью Рецепты WMI: управление процессами.
Людоговский Александр, 07.02.2009г.
Перейти на главную страничку сайта (список статей, файлы для скачивания)
© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.