Рецепты WMI: сбор сведений о конфигурации операционной системы и установленном программном обеспечении

Примеры кода в статье приводятся на языке VBScript для административных сценариев Windows. Приведённые ниже примеры не исчерпывают всех возможностей классов, которые в них упоминаются (используются). Для получения полной информации обращайтесь к MSDN. Как правило, поиск в MSDN названия того или иного класса позволяет быстро получить перечень (описание) всех его свойств и методов.

Класс Win32_OperatingSystem

Класс Win32_OperatingSystem представляет операционную систему семейства Windows, установленную на компьютере. Если на компьютере установлено несколько операционных систем, класс возвращают экземпляр только активной в настоящее время операционной системы. Класс позволяет прочитать информацию о версии операционной системы, некоторых настройках и текущем состоянии операционной системы. Приведённый ниже скрипт демострирует получение такой информации:

Класс Win32_ComputerSystem

Класс Win32_ComputerSystem предоставляет некоторые сведения о программно-аппаратной конфигурации компьютера в среде Windows. Пример получения информации:

Класс Win32_BIOS

Класс Win32_BIOS предоставляет информацию об установленной на компьютере BIOS. Пример получения информации:

Класс Win32_StartupCommand

Класс Win32_StartupCommand предоставляет информацию о командах автозагрузки, выполняемых при регистрации пользователей (в частности, из HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run). Пример получения информации:

Класс Win32_Product

Класс Win32_Product предоставляет информацию об установленных с помощью Windows Installer программных продуктах. Пример получения информации:

Класс Win32_SoftwareFeature

Класс Win32_SoftwareFeature предоставляет информацию об установленных с помощью Windows Installer компонентах программ. Пример получения информации:

Класс Win32_ClassicCOMClassSetting

Класс Win32_ClassicCOMClassSetting предоставляет информацию об установленных в системе COM-серверах. Пример получения информации:

On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If
For Each objCOM In objService.ExecQuery("SELECT * FROM Win32_ClassicCOMClassSetting")
	WScript.Echo objCOM.ComponentId 'GUID
	WScript.Echo objCOM.Caption 'краткое описание
	WScript.Echo objCOM.ProgID 'программный идентификатор
	WScript.Echo objCOM.InprocServer32 'полный путь к библиотеке DLL
	WScript.Echo
Next
On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If

For Each objProduct In objService.ExecQuery("SELECT * FROM Win32_SoftwareFeature")
	'наименование (описание)
	WScript.Echo objProduct.Name
	WScript.Echo objProduct.Caption
	WScript.Echo objProduct.Description
	WScript.Echo objProduct.ProductName
	'версия
	WScript.Echo objProduct.Version
	'производитель
	WScript.Echo objProduct.Vendor
	'серийный номер
	WScript.Echo objProduct.IdentifyingNumber
	'состояние установки
	'-6 Bad Configuration 
	'-2 Invalid Argument 
	'-1 Unknown Package 
	'1 Advertised 
	'2 Absent 
	'3 Local 
	'4 Source 
	WScript.Echo objProduct.InstallState
	'количество запусков
	WScript.Echo objProduct.Accesses
	'дата-время последнего использования
	WScript.Echo objProduct.LastUse
	WScript.Echo "****************************************"
Next
On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If
For Each objProduct In objService.ExecQuery("SELECT * FROM Win32_Product")
	'наименование (описание)
	WScript.Echo objProduct.Name
	WScript.Echo objProduct.Caption
	WScript.Echo objProduct.Description
	'версия
	WScript.Echo objProduct.Version
	'производитель
	WScript.Echo objProduct.Vendor
	'серийный номер
	WScript.Echo objProduct.IdentifyingNumber
	'дата установки
	WScript.Echo objProduct.InstallDate
	WScript.Echo objProduct.InstallDate2
	'каталог установки
	WScript.Echo objProduct.InstallLocation
	'состояние установки
	'-6 Bad Configuration
	'-2 Invalid Argument
	'-1 Unknown Package
	'1 Advertised
	'2 Absent
	'5 Installed
	WScript.Echo objProduct.InstallState
	'путь к файлу установки MSI
	WScript.Echo objProduct.PackageCache
	WScript.Echo "****************************************"
Next
On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If
For Each objSC In objService.ExecQuery("SELECT * FROM Win32_StartupCommand")
	WScript.Echo objSC.Command 'команда
	WScript.Echo objSC.Location 'источник (где определена команда)
	WScript.Echo objSC.User 'пользователь (для которого происходит запуск)
	WScript.Echo "****************************************"
Next
On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If
For Each objBIOS In objService.ExecQuery("SELECT * FROM Win32_BIOS")
	Exit For
Next
'наименование (описание)
WScript.Echo objBIOS.Name
WScript.Echo objBIOS.Caption
WScript.Echo objBIOS.Description
'версия
WScript.Echo objBIOS.SMBIOSBIOSVersion
WScript.Echo objBIOS.SMBIOSMajorVersion
WScript.Echo objBIOS.SMBIOSMinorVersion
WScript.Echo objBIOS.Version
'производитель
WScript.Echo objBIOS.Manufacturer
'язык
WScript.Echo objBIOS.CurrentLanguage
'дата выпуска
WScript.Echo objBIOS.ReleaseDate
'серийный номер
WScript.Echo objBIOS.SerialNumber
On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If
For Each objOS In objService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
	Exit For
Next
'имя компьютера
WScript.Echo objOS.Caption
'домен
WScript.Echo objOS.Domain
'роль компьютера в домене
'0 Standalone Workstation 
'1 Member Workstation 
'2 Standalone Server 
'3 Member Server 
'4 Backup Domain Controller 
'5 Primary Domain Controller 
WScript.Echo objOS.DomainRole
'входит в домен (булево)
WScript.Echo objOS.PartOfDomain
'всего физической памяти (байт)
WScript.Echo objOS.TotalPhysicalMemory
'залогиненный в данный момент пользователь
WScript.Echo objOS.UserName
On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If
For Each objOS In objService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
	Exit For
Next
'**************************************************************************************************
'СВЕДЕНИЯ О ВЕРСИИ ОПЕРАЦИОННОЙ СИСТЕМЫ
'короткое описание версии операционной системы
WScript.Echo objOS.Caption
'номер билда операционной системы
WScript.Echo objOS.BuildNumber
'номер версии операционной системы
WScript.Echo objOS.Version
'имя операционной системы
WScript.Echo objOS.Name
'посл. установленный сервис-пак (строка); если никакой сервис-пак не установлен, пустая строка.
'для Windows 95 это свойство содержит произвольную доп. информацию об операционной системе.
WScript.Echo objOS.CSDVersion
'версия сервис-пака
WScript.Echo objOS.ServicePackMajorVersion
'подверсия сервис-пака
WScript.Echo objOS.ServicePackMinorVersion
'**************************************************************************************************
'СВЕДЕНИЯ О НАСТРОЙКАХ ОПЕРАЦИОННОЙ СИСТЕМЫ
'язык операционной системы.
WScript.Echo objOS.OSLanguage
'тип операционной системы:
'16 - WIN95, 17 - WIN98, 18 - WINNT, 19 - WINCE
WScript.Echo objOS.OSType
'значение кодовой страницы, которую использует операционная система (до 6 символов); если
'операционная система не использует кодовую страницу ANSI, это свойство содержит 0 (нуль)
WScript.Echo objOS.CodeSet
'код региона, который использует операционная система (до 6 символов)
WScript.Echo objOS.CountryCode
'идентификатор языка, используемого операционной системой
WScript.Echo objOS.Locale
'врменная зона; число минут смещения от времени по Гринвичу (положительное, отрицательное, или нуль).
WScript.Echo objOS.CurrentTimeZone
'дата-время установки
WScript.Echo objOS.InstallDate
'имя компьютера
WScript.Echo objOS.CSName
'организация, на которую зарегистрирована операционная система
WScript.Echo objOS.Organization
'зарегистрированный пользователь операционной системы
WScript.Echo objOS.RegisteredUser
'серийный номер
WScript.Echo objOS.SerialNumber
'директория системных файлов, например, "C:\WINDOWS\SYSTEM32"
WScript.Echo objOS.SystemDirectory
'директория WINDOWS, например, "C:\WINDOWS"
WScript.Echo objOS.WindowsDirectory
'**************************************************************************************************
'СВЕДЕНИЯ О ТЕКУЩЕМ СОСТОЯНИИ ОПЕРАЦИОННОЙ СИСТЕМЫ
'Текущее состояние операционной системы
'"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service"
WScript.Echo objOS.Status
'дата + время последней загрузки
WScript.Echo objOS.LastBootUpTime
'текущая локальная дата + время на компьютере
WScript.Echo objOS.LocalDateTime
'количество пользовательских сеансов,
'для которых операционная система сохраняет информацию о состоянии в настоящее время.
WScript.Echo objOS.NumberOfUsers
'является ли операционная система загружаемой по умолчанию (булево)
WScript.Echo objOS.Primary

Источник: http://www.script-coding.info

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

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