Перейти на главную страничку сайта (список статей, файлы для скачивания)
С помощью объектов 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 При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.