Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Teoria_LR_4.doc
Скачиваний:
10
Добавлен:
19.11.2019
Размер:
307.71 Кб
Скачать

Строка моникера

Существует три основных синтаксиса строки моникера. От основной строки синтаксиса зависит то, к чему именно будет подключаться сценарий. Ниже представлены эти три строки синтаксиса:

  • Winmgmts::«класс». Данный синтаксис позволяет подключиться к определенному классу репозитория CIM, хранящемуся в пространстве имен по умолчанию;

  • Winmgmts::«класс»:«метод». Данный синтаксис выполняет подключение к определенному классу репозитория CIM, хранящемуся в пространстве имен по умолчанию, после чего возвращает указать на конкретный метод данного класса;

  • Winmgmts::«класс».«ключевое свойство»=«значение». Данный синтаксис возвращает указатель на конкретный экземпляр класса, хранящегося в пространстве имен по умолчанию.

Если в строке моникера не указано пространство имен, тогда по умолчанию выполняется подключение к пространству имен \\root\cimv2.

Winmgmts://server01/root/cimv2:Win32_OperatingSystem

В приведенном примере server01 – это, сетевое имя компьютера, на котором мы хотим получить доступ к объекту WMI. Если указать вместо сетевого имени символ «.» (точка), то подключение будет происходить к локальному компьютеру. Root/CIMv2 – это пространство имен репозитория WMI (по аналогии очень похоже на виртуальный каталог веб-сервера). После двоеточия идет наименование класса WMI, к объектам которого мы хотим обратиться. В данном примере это класс Win32_OperatingSystem. Следует заметить, что в moniker string можно использовать не только прямую наклонную черту, но и обратную, так что строки «winmgmts://server01/root/cimv2» и «winmgmts:\\server01\root\cimv2» одинаковы.

При подключении к репозиторию WMI необязательно указывать имя локального сервера точкой. Строка может выглядеть и так: «WinMgmts:root/CIMv2». Если в строке moniker-string имя сервера не указано, то подключение произойдет и к локальному репозиторию WMI. Точно так же, как и в случае использования строки «WinMgmts://./root/CIMv2».

Работа с Active Directory через WMI Directory Service provider

Еще один полезный и интересный провайдер WMI – это провайдер для работы со службой каталогов Microsoft Active Directory. Все классы этого провайдера определены в пространстве имен root\deirctory\ldap. Существует альтернативное средство для работы с Active Directory из сценариев и приложений – это ADSI (Active Directory Services Interfaces). Объектная библиотека ADSI более проста и удобна в использовании, чем провайдер WMI Directory Services, тем более что он является надстройкой над все тем же ADSI.

Зачем же тогда нужен этот провайдер?! – возникает вопрос. Все довольно просто: поскольку WMI универсальное средство мониторинга и управления системой Windows и ее компонентами, то есть необходимость интегрировать все средства управления системой через WMI. Кроме того, поскольку некоторые программные продукты по своей архитектуре могут использовать только WMI, то задача управления Active Directory должна быть решена и через WMI в том числе.

В листинге 2 приведен пример простого сценария WMI, который модифицирует поле displayname указанного пользователя Active Directory.

Листинг 2. Изменение свойств пользователя в Active Directory через WMI

 strComputer = "."

strUserID = "MyNew_WMI_User" 

Set objWMIService = GetObject("Winmgmts:\\" & strComputer & "\root\directory\ldap") 

Set objValSet = CreateObject("wbemscripting.swbemnamedvalueset") 

objValSet.add "__PUT_EXT_PROPERTIES", array("ds_displayname")

objValSet.add "__PUT_EXTENSIONS", true

objValSet.add "__PUT_EXT_CLIENT_REQUEST", true 

Set objEnum = objWMIService.ExecQuery("select * from ds_user where ds_cn = '" & strUserID & "'", "WQL", 32) 

For each objUser in objEnum

    objUser.ds_DisplayName = "Обновленноое поле DisplayName"

    objUser.put_ 1, objValSet

Next

 WScript.Echo "Свойства прользователя Active Directory обновлены"

При изменении свойств объектов Active Directory через WMI есть одна существенная особенность – необходимо явно определять, какие из атрибутов объекта вы хотите модифицировать. Для этого их названия нужно перечислить в специальном объекте класса swbemnamedvalueset. В остальном взаимодействие с классами провайдера службы каталогов практически не отличается от работы с другими классами WMI.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]