Показанный в этой статье скрипт WSH JScript считывает через WMI информацию о компьютере:
- информация о материнской плате,
- информация о процессорах,
- информация о модели компьютера (если это ноутбук или готовый компьютер).
Для использования WMI необходимо, как обычно, создать экземпляр:
var wmi = GetObject("winmgmts:" +
"{impersonationLevel=impersonate}!\\\\.\\root\\cimv2");
Далее считываем данные через соответствующие классы.
Материнская плата
Информация о материнской плате доступна через класс Win32_BaseBoard, например:
for( var i = new Enumerator(wmi.ExecQuery("select * from Win32_BaseBoard")); !i.atEnd(); i.moveNext()) { WScript.Echo("BaseBoard.Manufacturer = " + i.item().Manufacturer); WScript.Echo("BaseBoard.Model = " + i.item().Model); WScript.Echo("BaseBoard.Name = " + i.item().Name); WScript.Echo("BaseBoard.Product = " + i.item().Product); WScript.Echo("BaseBoard.SerialNumber = " + i.item().SerialNumber); }
Процессоры
Информация о процессорах доступна через класс Win32_Processor, при этом процессоров может быть несколько:
var processor_id = 0; for ( var i = new Enumerator(wmi.ExecQuery("select * from Win32_Processor")); !i.atEnd(); i.moveNext() ) { var p = i.item(); WScript.Echo("Processor" + processor_id + ".Caption = " + p.Caption); WScript.Echo("Processor" + processor_id + ".Name = " + p.Name); WScript.Echo("Processor" + processor_id + ".ProcessorId = " + p.ProcessorId); WScript.Echo("Processor" + processor_id + ".ProcessorType = " + p.ProcessorType); WScript.Echo("Processor" + processor_id + ".Revision = " + p.Revision); WScript.Echo("Processor" + processor_id + ".SerialNumber = " + p.SerialNumber); WScript.Echo("Processor" + processor_id + ".Stepping = " + p.Stepping); WScript.Echo("Processor" + processor_id + ".UniqueId = " + p.UniqueId); WScript.Echo("Processor" + processor_id + ".Version = " + p.Version); ++processor_id; } WScript.Echo("ProcessorCount = " + processor_id);
Модель компьютера
Модель компьютера имеет смысл, если компьютер поставляется уже собранным. Информация доступна через класс Win32_ComputerSystemProduct, например:
for ( var i=new Enumerator( wmi.ExecQuery("select * from Win32_ComputerSystemProduct")); !i.atEnd(); i.moveNext()) { WScript.Echo("System.Caption = " + i.item().Caption); WScript.Echo("System.Name = " + i.item().Name); WScript.Echo("System.IdentifyingNumber = " + i.item().IdentifyingNumber); WScript.Echo("System.UUID = " + i.item().UUID); WScript.Echo("System.Vendor = " + i.item().Vendor); }
Полный текст
Полный текст скрипта:
var wmi = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\\\.\\root\\cimv2"); for( var i = new Enumerator(wmi.ExecQuery("select * from Win32_BaseBoard")); !i.atEnd(); i.moveNext()) { WScript.Echo("BaseBoard.Caption = " + i.item().Caption); WScript.Echo("BaseBoard.Description = " + i.item().Description); WScript.Echo("BaseBoard.Manufacturer = " + i.item().Manufacturer); WScript.Echo("BaseBoard.Model = " + i.item().Model); WScript.Echo("BaseBoard.Name = " + i.item().Name); WScript.Echo("BaseBoard.Product = " + i.item().Product); WScript.Echo("BaseBoard.SerialNumber = " + i.item().SerialNumber); WScript.Echo("BaseBoard.SKU = " + i.item().SKU); WScript.Echo("BaseBoard.Tag = " + i.item().Tag); WScript.Echo("BaseBoard.Version = " + i.item().Version); } var processor_id = 0; for ( var i = new Enumerator(wmi.ExecQuery("select * from Win32_Processor")); !i.atEnd(); i.moveNext() ) { var p = i.item(); WScript.Echo("Processor" + processor_id + ".Caption = " + p.Caption); WScript.Echo("Processor" + processor_id + ".Description = " + p.Description); WScript.Echo("Processor" + processor_id + ".Name = " + p.Name); WScript.Echo("Processor" + processor_id + ".ProcessorId = " + p.ProcessorId); WScript.Echo("Processor" + processor_id + ".ProcessorType = " + p.ProcessorType); WScript.Echo("Processor" + processor_id + ".Revision = " + p.Revision); WScript.Echo("Processor" + processor_id + ".SerialNumber = " + p.SerialNumber); WScript.Echo("Processor" + processor_id + ".Stepping = " + p.Stepping); WScript.Echo("Processor" + processor_id + ".UniqueId = " + p.UniqueId); WScript.Echo("Processor" + processor_id + ".Version = " + p.Version); ++processor_id; } WScript.Echo("ProcessorCount = " + processor_id); for ( var i=new Enumerator( wmi.ExecQuery("select * from Win32_ComputerSystemProduct")); !i.atEnd(); i.moveNext()) { WScript.Echo("System.Caption = " + i.item().Caption); WScript.Echo("System.Description = " + i.item().Description); WScript.Echo("System.Name = " + i.item().Name); WScript.Echo("System.SKUNumber = " + i.item().SKUNumber); WScript.Echo("System.IdentifyingNumber = " + i.item().IdentifyingNumber); WScript.Echo("System.UUID = " + i.item().UUID); WScript.Echo("System.Vendor = " + i.item().Vendor); WScript.Echo("System.Version = " + i.item().Version); }
Сохраните как hardware.js и запускайте через script:
>cscript //nologo hardware.js
Пример выполнения
Виртуальная машина VMWare с двумя настроенными процессорами:
C:\Users\username\Downloads>cscript //nologo hardware.js BaseBoard.Caption = Base Board BaseBoard.Description = Base Board BaseBoard.Manufacturer = Intel Corporation BaseBoard.Model = null BaseBoard.Name = Base Board BaseBoard.Product = 440BX Desktop Reference Platform BaseBoard.SerialNumber = None BaseBoard.SKU = null BaseBoard.Tag = Base Board BaseBoard.Version = None Processor0.Caption = Intel64 Family 6 Model 60 Stepping 3 Processor0.Description = Intel64 Family 6 Model 60 Stepping 3 Processor0.Name = Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz Processor0.ProcessorId = 0FABFBFF000306C3 Processor0.ProcessorType = 3 Processor0.Revision = 15363 Processor0.SerialNumber = undefined Processor0.Stepping = null Processor0.UniqueId = null Processor0.Version = Processor1.Caption = Intel64 Family 6 Model 60 Stepping 3 Processor1.Description = Intel64 Family 6 Model 60 Stepping 3 Processor1.Name = Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz Processor1.ProcessorId = 0FABFBFF000006C3 Processor1.ProcessorType = 3 Processor1.Revision = 15363 Processor1.SerialNumber = undefined Processor1.Stepping = null Processor1.UniqueId = null Processor1.Version = ProcessorCount = 2 System.Caption = Computer System Product System.Description = Computer System Product System.Name = VMware Virtual Platform System.SKUNumber = null System.IdentifyingNumber = VMware-56 4d ce 2e 85 76 44 0a-8b e4 ec f1 51 96 c 3 d4 System.UUID = 2ECE4D56-7685-0A44-8BE4-ECF15196C3D4 System.Vendor = VMware, Inc. System.Version = None
Видно, что некоторые поля могут оказаться пустыми (null или None), это зависит от конфигурации конкретного компьютера.
Вывод определённого параметра
Если требуется вывести часть параметров, проще всего сделать это фильтрацией вывода обычным find’ом через конвейер, например, число процессоров в данном компьютере:
>cscript //nologo hardware.js | find /i "ProcessorCount"
ProcessorCount = 2
Если требуется вывести все параметры по определенной категории, например, всю информацию по процессору:
>cscript //nologo hardware.js | find /i "Processor0"
Processor0.Caption = Intel64 Family 6 Model 60 Stepping 3 Processor0.Description = Intel64 Family 6 Model 60 Stepping 3 Processor0.Name = Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz Processor0.ProcessorId = 0FABFBFF000306C3 Processor0.ProcessorType = 3 Processor0.Revision = 15363 Processor0.SerialNumber = undefined Processor0.Stepping = null Processor0.UniqueId = null Processor0.Version =
Сбор информации с удаленного компьютера
Чтобы считать эту же информацию не с локального, а с удаленного компьютера, необходимо, как обычно при создании объекта wmi вместо точки, обозначающей локальный компьютер, указать сетевое имя удаленного компьютера:
var wmi = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\\\REMOTEPCNAME\\root\\cimv2");
Естественно, необходимо, чтобы пользователь имел полномочия на удаленном компьютере.
Дополнительная информация
Все скрипты с использованием WMI