
- •Утиліти і засоби для роботи з wmi
- •Підключення до wmi
- •Робота з об'єктами sWbemServices і sWbemObject
- •Як дістатися до конкретного об'єкту: мова запитів wql
- •Робота з подіями
- •6.1 Архітектура роботи з подіями в wmi
- •6.2 Типи подій
- •6.3 Запит, реєструючий подію
- •Класи wmi
- •7.1 Класи wmi для роботи з устаткуванням
- •7.2 Класи для роботи з операційною системою
- •Робота із службами
- •Робота з файлами і каталогами
- •Робота з журналом подій Windows
- •Об'єкт операційної системи - Win32_OperatingSystem
- •Робота з Win32_Process : запуск, завершення роботи, моніторинг процесів на комп'ютері
- •Інші класи для роботи з операційною системою
- •7.3 Класи для роботи зі встановленими продуктами
- •Практичне завдання:
Класи wmi
Ми розібралися в прийомах роботи з WMI, проте залишилася ще одна важлива тема - а що фізично можна зробити за допомогою WMI, які в WMI передбачені класи, а для класів - які властивості і методи.
Класів в WMI передбачені сотні. Ми розглянемо тільки найважливіші. Усі класи поділені на три великі групи:
класи, що відносяться до устаткування;
класи, що відносяться до операційної системи;
класи, що відносяться до встановлених застосувань.
Ми акцентуватимемо увагу на тих можливостях, які дозволяють нам не лише отримувати пасивну інформацію, але і управляти комп'ютером.
7.1 Класи wmi для роботи з устаткуванням
Класи WMI для роботи з устаткуванням можна розділити на дев'ять великих категорій:
класи для роботи з пристроями охолодження (Win32_Fan, Win32_TemperatureProbe і тому подібне)
для роботи з пристроями введення (Win32_Keyboard, Win32_PointingDevice)
з дисками (Win32_CDROMDrive, Win32_DiskDrive, Win32_FloppyDisk)
з материнською платою/контроллерами/портами (Win32_MotherboardDevice, Win32_BIOS, Win32_PhysicalMemory, Win32_Processor і тому подібне)
з мережею (головний - Win32_NetworkAdapter)
з живленням (Win32_Battery, Win32_PowerManagementEvent)
з друком (Win32_Printer, Win32_PrintJob)
з модемами (Win32_POTSModem)
з відеопідсистемою (Win32_DesktopMonitor, Win32_DisplayConfiguration, Win32_VideoController, Win32_VideoSettings).
Практично усі ці класи призначені для можливості тільки отримання інформації на читання, без можливості внесення змін. Виняток становлять тільки:
клас Win32_Fan - можливість програмним чином встановлювати швидкість обертання вентилятора (якщо така можливість підтримується материнською платою);
клас Win32_LogicalDisk - за допомогою його можна міняти ім'я тому (властивість Volume Name)
клас Win32_NetworkAdapterConfiguration. У цього класу - десятки методів, які дозволяють міняти мережеві налаштування для адаптера програмним чином.
Наприклад, щоб настроїти комп'ютер на використання DHCP, можна використовувати код виду :
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter In colNetAdapters
errEnable = objNetAdapter.EnableDHCP()
If errEnable = 0 Then
Wscript.Echo "DHCP has been enabled."
Else
Wscript.Echo "DHCP could not be enabled."
End If
Next
Щоб навпаки, настроїти потрібну нам статичну IP-адресу, можна використати код
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
strIPAddress = Array("192.168.1.141")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.1.100")
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WScript.Echo "The IP address has been changed."
Else
WScript.Echo "The IP address could not be changed."
End If
Next
За допомогою інших методів цього класу ви можете настроювати домен DNS, параметри роботи з серверами DNS і WINS, IPSec і фільтрацію пакетів TCP/IP, додавати додаткові мережеві протоколи, служби і клієнти - загалом, усе, що доступно на графічному екрані або через реєстр.