.
Компоненты COM
Для того чтобы разобраться в структуре файла формата WSC, необходимо иметь базовые представления о том, что такое компоненты COM. COM - это одна из тех основных технологий, благодаря которым сценарии WSH являются столь полезным инструментом. Сценарий WSH может использовать хост-компоненты COM для получения доступа к тем функциям, которые сам язык сценариев реализовать не может. Например, язык VBScript сам по себе не предоставляет каких-либо возможностей для доступа к файловой системе, однако для работы с файлами в VBScript можно использовать СОМ-компонент Scripting.FileSystemObject. Таким образом, при реализации практических задач администрирования, сценарии WSH в полной мере задействуют компоненты COM.
Вы можете сами создавать полнофункциональные компоненты COM непосредственно в тексте сценария. Разработка собственных компонентов - это очень удобный способ создания отдельных объектов, которые в дальнейшем могут свободно использоваться в других сценариях, а также в других языках программирования, поддерживающих технологию COM, таких как Visual Basic (VB).
Файлы WSC
Как было отмечено выше, файлы WSC - это текстовые файлы формата XML, которые описывают набор элементов и атрибутов, определяющих интерфейс объекта (в частности, свойства и методы, которые могут вызываться из сценариев), а также его реализацию на каком-либо языке сценариев.
Файлы WSC имеют несколько собственных элементов XML:
- Внутри элемента
реализуется полное определение компонента сценария. Все остальные элементы должны размещаться между тегами и component>. - С помощью элемента the в компоненте может быть реализована более углубленная проверка ошибок. Здесь используются два атрибута: error и debug. Если error="true", то будут выводиться более подробные сообщения об ошибках, а если используется атрибут debug="true", то это дает возможность пошагового выполнения кода сценария в отладчике сценариев (script debugger).
- В элементе
размещается информация, необходимая для регистрации данного компонента COM в системе. Он имеет четыре атрибута, которые приведены в Таблице 1. Корректный глобально уникальный идентификатор (GUID) можно сгенерировать либо с помощью мастера Windows Script Component Wizard (см. вкладку "Дополнительные ресурсы"), либо с помощью утилиты guidgen.exe из пакета Platform Software Development Kit (SDK). Когда вы регистрируете или удаляете (unregister) компонент (эту процедуру я далее кратко опишу), исполнительная среда WSC использует данные, размещенные в элементе для внесения соответствующих изменений в реестр. - Компонент
используется для описания интерфейса компонента (в частности, его доступных свойств и методов). Все элементы типа или должны размещаться внутри элемента . - Элемент
служит для объявления свойств компонента. В случае простого свойства read/write (чтение/запись) элемент ссылается на глобальную переменную в коде сценария. Имя этой глобальной переменной должно точно совпадать с именем данного свойства, за исключением тех случаев, когда для организации ссылки на переменную с другим именем используется атрибут internalname. Элемент также может использовать элементы и (они не имеют закрывающих тегов), когда необходимо вызвать код, реализующий установку и/или извлечение значения данного свойства, а также при создании свойств типа read-only или write-only. Если создается свойство write-only, то в этом случае в элемент включается только элемент . В сценарии, в свою очередь, должна быть определена функция с именем put_propertyname, где propertyname соответствует имени требуемого свойства. Соответственно, при создании свойства read-only используется только элемент , а соответствующая функция в сценарии должна иметь название get_propertyname. Для использования других имен функций, используемых для обращений к свойствам, в элементы и может добавляться атрибут internalname. - Элемент
используется при объявлении того или иного метода компонента. Имя метода должно совпадать с именем соответствующей функции в коде сценария. Как и в случае элемента , если нужно использовать различающиеся имена, задействуйте атрибут internalname. При необходимости объявления параметров функции могут применяться один или несколько элементов . - В элементе
Листинг 2: Фрагмент GetMembers.wsc
Листинг 3. UseGetMembers.vbs
Dim GetMembers, Member
Set GetMembers = CreateObject("Penton.GetMembers")
' BEGIN COMMENT
' Вывод с помощью метода Echo
' имени каждого члена группы Domain Admins в текущем домене.
' END COMMENT
For Each Member In GetMembers.Members
WScript.Echo Member
Next