Показанный в этой статье скрипт 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

Наши соцсети

Информация о компьютере
Метки:     

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *