Класс Win32_NetworkAdapter позволяет получить информацию о параметрах сетевого адаптера, таких как, имя производителя, MAC адрес, серийный номер и так далее.
Win32_NetworkAdapter происходит от класса CIM_NetworkAdapter, тем самым, унаследовав от него часть свойств. Из 4 методов реализованы только два (enable и disable). Класс предоставляет провайдер подсистемы Win32, используемые файлы — Cimwin32.mof и Cimwin32.dll, пространство именrootCIMV2. Сам класс не позволяет вносить изменения в параметры сетевого адаптера, для этих целей используется класс Win32_NetworkAdapterConfiguration.
Если открыть диспетчер устройств на моем компьютере, то в нем отображаются только два сетевых адаптера – проводной и беспроводный. Однако, в системе есть и другие типы сетевых адаптеров – виртуальные. Например:
- Microsoft видео или ТВ подключение
- RAS асинхронный адаптер
- Минипорт WAN (L2TP)
- Прямой параллельный порт
- ….
Так, я в своем время пользовался беспроводным модемом, информация о нем тоже осталась. Как вы уже поняли, с помощью класса Win32_NetworkAdapter можно получить информацию не только о физических, но и виртуальных адаптерах, что довольно полезно.
Прежде чем приступать к программированию, давайте откроем утилиту WMI CIM Studio, и посмотрим, какую информацию можно извлечь о классе Win32_NetworkAdapter.
Выберите в левой панели класс Win32_NetworkAdapter и в правой панели просмотрите содержимое вкладок Properties и Methods. Видим, что ключевым является свойство DeviceID, именно оно используется при получении конкретного экземпляра данного класса WMI. На вкладке Methods отображаются только два метода, и то, не имеющие реализации, все дело в том, что методы Enable и Disable добавлены в Windows Vista, а я работаю в Windows XP.
Теперь просмотрите вкладку Associations, на ней отображаются ассоциативные связи с классами Win32_NetworkProtokol, Win32_NetworkAdapterConfiguration и Win32_SystemDriver.
Теперь нажмите на кнопку Instances, и вы сможете получить список всех экземпляров данного класса, а в итоге – параметры сетевых адаптеров, установленных в системе, при чем, как физических, так и виртуальных.
Аналогичную информацию мы можем получить с помощью утилиты командной строки WMIC, ниже привожу ряд команд, которые нужно выполнить в консольном окне командной строки:
Получаем имя и идентификатор сетевого адаптера:
WMIC PATH Win32_NetworkAdapter GET DeviceID, Manufacturer |
Выводим параметры сетевого адаптера под номером 1 во внешний файл в виде таблицы:
WMIC PATH Win32_NetworkAdapter WHERE"DeviceID='1'"GET/FORMAT:HFORM>d:\WORK\info.htm |
Выводим параметры всех сетевых адаптеров во внешний файл в виде таблицы:
WMIC PATH Win32_NetworkAdapter GET/FORMAT:HFORM>d:\WORK\info.htm |
Выводим информацию о свойствах и методах класса Win32_NetworkAdapter:
WMIC CLASS Win32_NetworkAdapter |
Методы класса Win32_NetworkAdapter
Disable — отключение сетевого адаптера.
Enable — включение сетевого адаптера.
Свойства класса Win32_NetworkAdapter
AdapterType – Содержит информацию и типе сетевого подключения, например, “Глобальная сеть”.
AdapterTypeID – Содержит такую же информацию как и свойство AdapterType, но только в виде цифры. Значения:
- 0 (0x0) — Ethernet 802.3
- 1 (0x1) — Token Ring 802.5
- 2 (0x2) — Fiber Distributed Data интерфейс (FDDI)
- 3 (0x3) — Глобальная сеть (WAN)
- 4 (0x4) — LocalTalk
- 5 (0x5) — Ethernet с использованием формата заголовка DIX
- 6 (0x6) — ARCNET
- 7 (0x7) — ARCNET (878,2)
- 8 (0x8) — ATM
- 9 (0x9) — Беспроводная сеть
- 10 (0xA) — Беспроводная инфракрасная сеть
- 11 (0xB) — Bpc
- 12 (0xC) — COWAN
- 13 (0xD) — 1394
AutoSense – Содержит логическое значение, которое определяет, может ли сетевой адаптер автоматически определять скорость работы подключенного сетевого носителя. Данное свойство не реализовано, (CIM_NetworkAdapter).
Availability — Наличие и состояние устройства, (CIM_LogicalDevice). Возможные значения смотрите в документации Microsoft.
Caption – Описание устройства в короткой форме, (CIM_ManagedSystemElement).
ConfigManagerErrorCode – Код ошибки.
ConfigManagerUserConfig – Содержит логическое значение, определяющее, используется ли конфигурация пользователя, (CIM_LogicalDevice).
CreationClassName – Имя класса создателя, (CIM_LogicalDevice).
Description – Более обширное описание устройства, (CIM_ManagedSystemElement).
DeviceID – Идентификатор сетевого адаптера, (CIM_LogicalDevice).
ErrorCleared – Если значение TRUE, значит, информация об ошибке в свойстве LastErrorCode очищена, (CIM_LogicalDevice).
ErrorDescription – Описание ошибки, (CIM_LogicalDevice).
GUID — Глобально уникальный идентификатор соединения. Не поддерживается в Windows Server 2003 и Windows XP.
Index – Номер сетевого адаптера, установленного в системе, например, 1.
InstallDate – Дата установки, (CIM_ManagedSystemElement).
Installed – Если значение TRUE, значит сетевой адаптер установлен в системе.
InterfaceIndex — Значение индекса, уникально идентифицирующего локальный интерфейс, свойство не поддерживается в Windows XP, параметры сетевого адаптера.
LastErrorCode – Последний код ошибки, сообщенный устройством, (CIM_LogicalDevice).
MACAddress – Собственно, MAC-адрес сетевого адаптера.
Manufacturer – Имя сетевого адаптера, заданное производителем.
MaxNumberControlled – Максимальное количество непосредственно адресуемых портов, поддерживаемых этим сетевым адаптером. Значение 0 — если число неизвестно.
MaxSpeed — Максимальная скорость сетевого адаптера в битах в секунду, (CIM_NetworkAdapter).
Name – Метка сетевого адаптера, (CIM_ManagedSystemElement).
NetConnectionID – Чтение и запись. Указывает имя сетевого подключения в том виде, в котором оно появляется в папке »Сетевые подключения. В Windows Server 2003 and Windows XP данное свойство доступно только для чтения.
NetConnectionStatus – Состояние подключения сетевого адаптера к сети. Значения:
- 0 (0x0) — Отключено
- 1 (0x1) — Подключение
- 2 (0x2) — Подключено
- 3 (0x3) — Отключение
- 4 (0x4) — Оборудование не присутствует
- 5 (0x5) — Оборудование отключено
- 6 (0x6) — Апаратный сбой
- 7 (0x7) — Носитель отключен
- 8 (0x8) — Аутентификация
- 9 (0x9) — Аутентификация удалась
- 10 (0xA) — Ошибка аутентификации
- 11 (0xB) — Неправильный адрес
- 12 (0xC) — Требуются полномочия
NetEnabled — Указывает, является ли адаптер включеным или нет. Если TRUE – сетевой адаптер включен. Вы можете включить или отключить сетевой адаптер с помощью методов Enable и Disable. В Windows Server 2003 и Windows XP свойство не доступно.
NetworkAddresses – Массив, содержащий адреса сетевого адаптера, (CIM_NetworkAdapter). Свойство не реализовано.
PermanentAddress — Сетевой адрес прошитый в сетевом адаптере, (CIM_NetworkAdapter).
PhysicalAdapter — Указывает является ли сетевой адаптер физическим или логическим. Если TRUE, то адаптер является физическим. Свойство не реализовано в Windows Server 2003 и Windows XP.
PNPDeviceID — Win32-идентификатор логического устройства Plug and Play, (CIM_LogicalDevice).
PowerManagementCapabilities – Параметры питания сетевого адаптера, (CIM_LogicalDevice).
PowerManagementSupported – Логическое значение, определяющее, можно ли управлять питанием, (CIM_LogicalDevice).
ProductName — Наименование сетевого адаптера, например, «Fast EtherLink XL».
ServiceName – Служебное имя.
Speed — Оценка текущей пропускной способности в битах в секунду. Свойство не реализовано в Windows Server 2003 и Windows XP:
Status – Состояние устройства, (CIM_ManagedSystemElement). Значения: OK, Error, Degraded, Unknown, Pred Fail, Starting, Stopping, Service.
StatusInfo – Информация о статусе устройства, (CIM_LogicalDevice). Значения: 1 (0x1) — Другое, 2 (0x2) — Неизвестный, 3 (0x3) — Включено, 4 (0x4) — Отключено, 5 (0x5) — Не применимо.
SystemCreationClassName — Имя класса создания системы, (CIM_LogicalDevice).
SystemName – Системное имя, (CIM_LogicalDevice).
TimeOfLastReset – Дата и время последней перезагрузки сетевого адаптера, (CIM_NetworkAdapter).
Ниже я приводу два сценария, в которых выводится информация о параметрах сетевых адаптеров, найденных в системе. Информация будет записываться во временный файл, который будет сразу открываться. Примеры работы с методами я приведу в других статьях.
Пример на языке VBScript:
'************************************************************** ' Параметры сетевого адаптера ' Win32_NetworkAdapter.vbs '************************************************************** Option explicit dim objService, colNetworkAdapters, objItem dim NetworkInfo, objClassProperty dim FSO, TempPath, TxtFile Set objService = GetObject("WinMgmts:\\.\Root\CIMV2") Set colNetworkAdapters = objService.ExecQuery("SELECT * FROM Win32_NetworkAdapter") NetworkInfo = "Параметры сетевого адаптера" & vbCrLf & vbCrLf ' Начинаем перебор коллекции For Each objItem in colNetworkAdapters ' Начинаем перебор всех свойств для текущего экземпляра класса WMI For Each objClassProperty In objItem.Properties_ ' Если значение больше 0 If Len(objClassProperty.value)>0 Then NetworkInfo = NetworkInfo & objClassProperty.Name &"= " & objClassProperty.value &vbCrLf End If Next NetworkInfo = NetworkInfo & "----------------------------------------------" &vbCrLf &vbCrLf Next ShowInNotepad(NetworkInfo) 'Процедура создания временного файла с данными Sub ShowInNotepad(StrToFile) Set FSO = CreateObject("Scripting.FileSystemObject") TempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "\" & FSO.GetTempName Set TxtFile = FSO.CreateTextFile(TempPath) TxtFile.WriteLine(StrToFile) TxtFile.Close CreateObject("WScript.Shell").Run "wordpad.exe " & TempPath End Sub |
Пример на языке JScript:
//************************************************************** // Параметры сетевого адаптера // Win32_NetworkAdapter.js //************************************************************** var objWMIService, colItems, objItem var NetworkInfo, objItemC, objClassPropertyC, objClassProperty, strVal var TempPath, TxtFile // Получаем доступ к инструментарию Windows Management Instrumentation objWMIService = GetObject("WinMgmts:\\\\.\\Root\\CIMV2"); // выполняем WQL запрос и получаем коллекцию colItems = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapter"); // Начинаем перебор коллекции objItem = new Enumerator(colItems); NetworkInfo = "Параметры сетевого адаптера\n\n"; for (; !objItem.atEnd(); objItem.moveNext()) { objItemC = objItem.item(); // Начинаем перебор всех свойств для текущего экземпляра класса WMI objClassPropertyC = new Enumerator(objItemC.Properties_); for (; !objClassPropertyC.atEnd(); objClassPropertyC.moveNext()) { objClassProperty = objClassPropertyC.item(); // Если значение больше 0 strVal = objClassProperty.value if (strVal != null){ NetworkInfo+= objClassProperty.Name + "= " + objClassProperty.value + "\n"; } } NetworkInfo += "----------------------------------------------\n\n"; } ShowInNotepad(NetworkInfo) //Функцияя временного файла с данными function ShowInNotepad(StrToFile){ FSO = WScript.CreateObject("Scripting.FileSystemObject"); TempPath = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") + "\\" + FSO.GetTempName(); TxtFile = FSO.CreateTextFile(TempPath); TxtFile.WriteLine(StrToFile); TxtFile.Close(); WScript.CreateObject("WScript.Shell").Run ("wordpad.exe " + TempPath); } |