Инвентаризация установленных программ и обновлений средствами WMI и VBScript
дата последнего изменения: 24.08.2010
метки: инвентаризация, VBScript, WMI
Данный скрипт, как и скрипт для инвентаризации компьютеров, можно запускать разными способами — локально (если нет доступа по сети), удаленно (с рабочего места администратора), в «тихом» режиме — через logon-скрипт.
По итогам инвентаризации можно составить общий отчет в формате HTML. Он представляет собой матрицу, строки которой соответствуют программам, а столбцы — компьютерам. Если программа установлена на компьютере, на пересечении соответствующей строки и столбца выводится отметка — символ «+» и зеленый цвет фона. На таком отчете хорошо видно, где какие программы установлены, вот пример:

Загрузка и установка
Скрипт для инвентаризации программ и обновлений средствами WMI, формат VBS, упакован ZIP: invent_soft.zip
Установка не требуется, достаточно распаковать архив в отдельный каталог на рабочей станции администратора.
Первый этап работы — сбор данных
Для сбора данных надо запустить скрипт invent_soft.vbs и указать сетевое имя компьютера. Отчет в формате CSV будет сохранен в заданный каталог или на сетевой ресурс. Имя файла отчета соответствует сетевому имени компьютера.
Настройка скрипта
Настройка скрипта производится через определенные в нем константы. По умолчанию скрипт настроен на запуск вручную, при этом отчет записывается в подкаталог soft и выводятся необходимые запросы и сообщения:
Const DATA_DIR = "soft\" 'каталог для сохранения отчетов + "\" в конце Const SILENT = FALSE 'тихий режим отключен, будет запрошено имя компьютера
При автоматическом запуске, например через logon-скрипт необходимо указать путь к сетевому ресурсу, доступному для записи и отключить вывод диалогов:
Const DATA_DIR = "\\SRV\Invent\soft\" 'сетевой ресурс для сохранения отчетов + "\" в конце Const SILENT = TRUE 'режим отчета о локальном компьютере, без вывода диалогов
Настройка скрипта для создания общего отчета производится аналогично.
Инвентаризация обновлений
В списке установленных программ может быть достаточно много обновлений («заплаток»). Если инвентаризация проводится, например, с целью подсчета количества лицензий, то обновления при этом учитывать не нужно. Поэтому по умолчанию обновления не включаются в отчет.
Если же нужно выяснить, на каких компьютерах не хватает каких-либо заплаток — нетрудно перенастроить скрипт, чтобы он, напротив, включал в отчет только обновления. Для этого достаточно закомментировать (поставить символ кавычки в начале строки) константы:
'настройки для инвентаризации программ 'Const UPDATES = FALSE 'не учитывать обновления 'Const TITLE = "Инвентаризация установленных программ" 'заголовок диалоговых окон 'Const DATA_DIR = "soft\" 'путь для сохранения отчетов, если пусто - текущий каталог
И раскомментировать расположенные ниже константы, т.е. убрать символ кавычки в начале строк:
'настройки для инвентаризации обновлений Const UPDATES = TRUE 'учитывать только обновления Const TITLE = "Инвентаризация установленных обновлений" 'заголовок диалоговых окон Const DATA_DIR = "updates\" 'путь для сохранения отчетов, если пусто - текущий каталог
Точно так же, скрипт для создания общего отчета настраивается отдельно.
Источник данных
Список программ, получаемый через WMI-запрос SELECT Name, Vendor, Version, InstallDate FROM Win32_Product не полный, поэтому нужные данные берутся из реестра, из ветки HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\. Это те самые данные, по которым строится список установленных программ в «Панели управления» Windows. Для 64-х битных систем надо учитывать еще одну ветку — HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\, где отдельно хрянятся данные по 32-х битным программам.
Формат отчета с результатами
Для хранения данных используется CSV-файл с тремя столбцами:
- Название и версия программы
- Производитель
- Дата установки
Пример отчета:
Название и версия;Производитель;Дата установки 1C Предприятие 7.7;-;- 7-Zip 4.62;-;- Adobe Flash Player 10 ActiveX;Adobe Systems Incorporated;- Adobe Flash Player 10 Plugin;Adobe Systems Incorporated;- AIMP2;AIMP DevTeam;- Audacity 1.2.6;-;- avast! Antivirus;Alwil Software;- BackStreet Browser 3.1;-;- Borland Database Engine 5.11;-;- EPSON Scan;-;- Exact Audio Copy 0.99pb4;Andre Wiethoff;- Free Download Manager 3.0 Language pack;-;06.02.2009 Windows Internet Explorer 8;Microsoft Corporation;09.04.2009 ImgBurn;LIGHTNING UK!;- IrfanView (remove only);-;- High Definition Audio Driver Package - KB888111;Microsoft Corporation;- K-Lite Codec Pack 4.1.7 (Full);-;18.10.2008 Microsoft .NET Framework 2.0;Microsoft Corporation;- Mozilla Firefox (3.5);Mozilla;- ...
Второй этап работы — составление общего отчета
Для составления общего отчета достаточно запустить скрипт invent_soft_report.vbs. Скрипт просмотрит заданный в настройках каталог и из всех найденных там отчетов извлечет данные. Отчет будет выведен сразу в двух форматах, CSV и HTML. HTML удобен для быстрого просмотра, а CSV — для импорта в табличный редактор (OpenOffice.org Calc или MS Excel) и последующей обработки.
Для анализа результатов инвентаризации лучше использовать специализированные программы. Например, в OpenOffice.org Calc достаточно сделать следующее:
- Импортировать CSV-файл с общим отчетом, в качестве разделителя столбцов выбрать
;; - На месте столбца «B» вставить новый столбец для вывода общего количества установок программ, ввести нужную формулу;
- Для удобства просмотра уменьшить ширину столбцов с данными, названия компьютеров повернуть вертикально;
- Для наглядности выделить ячейки с установленными программами, через «Условное форматирование» и «Стилиста»;
- Установить автофильтр по всем столбцам;
- Чтобы названия программ и имена компьютеров не прокручивались — разбить и зафиксировать окно;
Пример оформленного таким образом отчета:

Что можно увидеть из такого отчета:
- Сколько имеется установок (и сколько нужно лицензий) каждой программы — см. столбец «B».
- На каких компьютерах установлена какая-либо программа — применить фильтр в столбце «А». Если нужно отобразить все версии одной программы — поможет «Стандартный фильтр», имя поля «Программы», условие «Начинается с», ввести значение.
- Какие программы установлены на каком-либо компьютере — применить фильтр в соответствующем столбце, выбрать значение «1». При этом будет видно, на каких еще компьютерах есть те же программы.
История изменений
- 27.07.2009 — Скрипт опубликован впервые.
- 24.08.2010 — Исправлена работа на 64-х битных системах, добавлено условие для исключения повторов названий программ.
Есть замечания, предложения или пожелания? Сообщите автору!
↑ К началу страницы | соответствует стандартам XHTML, CSS
