Задачи WMI: компьютерное программное обеспечение

Задачи WMI для компьютерного программного обеспечения получают такие сведения, как программное обеспечение, установленное установщиком Microsoft Windows (MSI) и версиями программного обеспечения. Другие примеры см. в разделе TechNet ScriptCenter по адресу https://www.microsoft.com/technet.

Примеры скриптов, показанные в этом разделе, получают данные только с локального компьютера. Дополнительные сведения об использовании скрипта для получения данных с удаленных компьютеров см. в разделе Подключение для WMI на удаленном компьютере.

В следующей процедуре описывается запуск скрипта.

Выполнение скрипта

  1. Скопируйте код и сохраните его в файле с расширением VBS, например filename.vbs. Убедитесь, что текстовый редактор не добавляет расширение TXT в файл.
  2. Откройте окно командной строки и перейдите в каталог, в котором сохранен файл.
  3. В командной строке введите cscript filename.vbs .
  4. Если вы не можете получить доступ к журналу событий, проверка, чтобы узнать, работаете ли вы в командной строке с повышенными привилегиями. Некоторые журналы событий, такие как журнал событий безопасности, могут быть защищены пользователем контроль доступа (UAC).

Примечание.

По умолчанию cscript отображает выходные данные скрипта в окне командной строки. Так как скрипты WMI могут создавать большие объемы выходных данных, может потребоваться перенаправить выходные данные в файл. Введите cscript filename.vbs > outfile.txt в командной строке, чтобы перенаправить выходные данные скрипта filename.vbs в outfile.txt.

Примечание.

Выполнение запроса Select * из Win32_Product может привести к неожиданному поведению. Это связано с тем, что поставщик, поддерживающий Win32_Product, не оптимизирован для запросов. Дополнительные сведения см. в КБ статье 974524.

В следующей таблице перечислены примеры скриптов, которые можно использовать для получения различных типов данных с локального компьютера.

Часто выполняемые действия в новом интерфейсе Классы или методы WMI
... удаление программного обеспечения с помощью скрипта? Если программное обеспечение было установлено с помощью установщика Microsoft Windows (MSI), используйте класс WMI Win32_Product и метод "Удалить".
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
    ("Select * from Win32_Product " _
        & "Where Name = 'Personnel database'")
For Each objSoftware in colSoftware
    objSoftware.Uninstall()
Next

PowerShell
$colSoftware = Get-WmiObject -Class Win32_Product | Where-Object {$_.name -eq "База данных персонала"} 

foreach ($colItem in $colSoftware) { $colItem.Uninstall() }

... инвентаризация всего программного обеспечения, установленного на компьютере с помощью скрипта?

Если программное обеспечение было установлено с помощью установщика Microsoft Windows (MSI), используйте класс WMI Win32_Product.

VB
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\" _ & & strComputer & "\root\cimv2") Set colSoftware = objWMIService.ExecQuery _ ("Select * from Win32_Product") 

For Each objSoftware in colSoftware Wscript.Echo "Name: " & objSoftware.Name Wscript.Echo "Version: " & objSoftware.Version Next

PowerShell
$colSoftware = Get-WmiObject -Class Win32_Product 

foreach ($colItem in $colSoftware) { "Name: " + $colItem.Name "Version: "+ $colItem.Version }

... определите, какая версия Microsoft Office установлена?

Используйте класс Win32_Product и проверка значение свойства Version.

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery(_
    "Select * from Win32_Product " & _
    "Where IdentifyingNumber =" _
        & " '{90280409-6000-11D3-8CFE-0050048383C9}'")
For Each objItem in colSoftware
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "Version: " & objItem.Version
Next

PowerShell
$colSoftware = Get-WmiObject -Class Win32_Product | Where-Object {$_. ИдентификацияNumber -eq "{90280409-6000-11D3-8CFE-0050048383C9}"} 

foreach ($colItem in $colSoftware) { "Name: " + $colItem.Name "Version: " + $colItem.Version }

Задачи WMI для сценариев и приложений

Примеры приложений WMI C++

TechNet ScriptCenter