|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
9.4.4. Подключение к службе WMIПодключение к WMI, объект Swbemlocator, моникер, объект SwbemServices Первое, что необходимо сделать в скрипте, — подключиться к службе WMI на локальном или удаленном компьютере. Подключение можно выполнять двумя разными способами: при помощи объекта Swbemlocator или при помощи так называемого моникера (moniker — специальный синтаксис для подключения к объектам COM). Первый способ выглядит так: 1. Вначале получаем объект SwbemLocator: Dim oLocator Set oLocator = CreateObject("wbemScripting.Swbemlocator") У объекта SwbemLocator есть всего лишь одно свойство и один метод. Свойство security_ используется для получения ссылки на одноименный вложенный объект и для настройки безопасности при подключении (если значения параметров безопасности отличаются от значений, предлагаемых по умолчанию), а метод ConnectServer() вызывается для подключения к службе WMI на локальном или удаленном компьютере. Если вы подключаетесь к службе WMI на локальном компьютере, то воспользоваться правами другого пользователя (отличного от текущего) вам не удастся — таковы ограничения службы DCOM. 2. Далее вызываем метод ConnectServer(), который возвращает нам объект SwbemServices: Dim oServices Set oServices = oLocator.ConnectServer("LONDON", _ "root\Microsoft\SqlServer\ComputerManagement") LONDON — это, конечно, имя сервера, а root\Microsoft\SqlServer\ComputerManagement — пространство имен для поставщика WMI Provider for Configuration Manager. Если вы хотите воспользоваться пространством имен для поставщика WMI Provider for Server Events, последняя строка должна выглядеть так: Set oServices = oLocator.ConnectServer("LONDON", _ "root\Microsoft\SqlServer\ServerEvents") 3. Полученный объект SwbemServices можно использовать для выполнения запросов WQL, получения ссылок на объекты WMI и т. п. Второй способ подключения к WMI, который является более стандартным, — использование моникера. Моникер (moniker) — это специальная метка, которая применяется для подключения к COM-объектам. При использовании моникера синтаксис получается более коротким и гибким (хотя, возможно, менее понятным): Set oServices = _ GetObject("WinMgmts://LONDON/root/Microsoft/SqlServer/ComputerManagement") А чтобы подключиться с его помощью к объекту, представляющему службы SQL Server, синтаксис может быть таким: Set oServices = _ GetObject("WinMgmts://LONDON/root/Microsoft/SqlServer/ComputerManagement:SQLService") Какой же метод выбрать? Все примеры у Microsoft построены только на использовании моникера, т. к. это проще и гибче. Однако у объекта Swbemlocator есть свои преимущества: q только при использовании этого объекта можно подключаться к компьютеру с правами другого пользователя; q при использовании этого объекта подсказки по свойствам и методам в средствах работы со скриптами, такими как PrimalScript, остаются, а при использовании моникера сразу пропадают. Отметим, что подключаться с правами другого пользователя можно только к удаленному компьютеру. Если вы попытаетесь подключиться с новыми правами к службе WMI на локальном компьютере, то возникнет ошибка. И еще один важный момент. Обратите внимание, что во всех предыдущих примерах использовалось подключение к службе WMI на компьютере в целом, без указания конкретного экземпляра SQL Server. Это характерная особенность поставщиков WMI для работы с SQL Server. Например, при обращении к объектам класса SQLService, представляющим службы SQL Server, вы получите объекты для всех экземпляров SQL Server, которые установлены на этом компьютере. Но если вас интересует только конкретный экземпляр сервера, то при обращении к объектам WMI нужно отфильтровывать требуемые экземпляры SQL Server средствами языка запросов WQL.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||