Инвентаризация программного обеспечения в домене. Программа для инвентаризации и учета компьютеров

28.03.2019

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

Инвентаризация сети – общее название для учета вычислительной техники и программ в вашей локальной сети. Инвентаризация сети также включает в себя контроль лицензий ПО. Таким образом, данная процедура – необходимое средство по контролю соответствия всего установленного программного обеспечения, с заданием «стандартного набора» для рабочего места.

Как происходит инвентаризация сети?

С использованием современных автоматизированных средств – специальных программ, процесс инвентаризации выполняется в полностью автоматическом режиме, и – что важно – без необходимости установки «агентского» (то есть, дополнительного) ПО на удаленные компьютеры. Ниже рассмотрены актуальные на сегодня версии подобных программ – серверного программного обеспечения, имеющего в том числе бесплатные лицензии, и, в некоторых случаях, с различным функционалом.

Free 1

Network Inventory Advisor от компании Clearapps – программа, обладающая 15-дневным бесплатным сроком использования. Доступна для скачивания по адресу: http://www.clearapps.ru/pc-inventory.html

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

Помимо суммирующего отчета с детальной информацией о программном обеспечении рабочих станций, можно создавать отчеты, включающие список программ, группируемых как по названию, версии, так – разработчику, и т.д. Любой удаленной программе можно присвоить статус: разрешенная к применению, запрещенная, обязательная к установке. Можно получить и отчет со списком компьютеров, содержащих программное обеспечение без лицензий. И все это – за минуты.

Информацию как по программному, так и аппаратному обеспечению, программа предоставляет администратору в виде отчетов. Задать можно любые, необходимые для вашего анализа, параметры поиска, по любым адресам сети. Для упрощения работы – уже составлены готовые шаблоны (шаблоны отчетов). А любой готовый отчет легко экспортировать в форматы: HTML, TSV, CSV, SQL, XML, также и легко – распечатать.

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

Специальный отчет

Здесь вы легко выберете все узлы и параметры, затем, программа построит отчет по параметрам.

Предустановленный отчет: отчет по антивирусам

Данный отчет позволит быстро найти, например, на каких из компьютеров не установлено антивирусное обеспечение.

В заключение, можно сказать: особенностью программы является мультиплатформенность в семействе систем Microsoft (есть версия даже для Win9x), инспектировать же – есть возможность любые рабочие станции (в том числе, BSD Unix, Linux).

Free 2

«Учет Программного Обеспечения» – сходная по функционалу программа, правда, не создающая отчетов с «железом». Основная ее функция – учет программного обеспечения, установленного на рабочих станциях локальной сети, необходимый, в частности, при инвентаризации программ и лицензий. Разработчики уверяют: программе – по силам и сеть больших предприятий.

Программа «Учет Программного Обеспечения» – отечественная разработка, заточенная именно под учет лицензий. Инвентаризация и аудит ПО на компьютерах в локальной сети, здесь снабжается функцией по ведению баз данных учета.

Здесь вы можете по сети (то есть – удаленно) отслеживать изменения списка установленного обеспечения. Узнать о типе установленной ОС, программах автозагрузки, обновлениях и так далее – все это позволит одна лишь программа, установленная на любом ПК в вашей локальной сети.

Компания 10-Strike, изготовитель данной программы, предоставляет ее в 2-х версиях: бесплатной полностью (http://www.10-strike.com/rus/network-software-audit/download.shtml), и в pro-версии, имеющей, при этом, 30-дневный пробный период.

Способы применения программы «Учет Программного Обеспечения»

  • Инвентаризация установленного ПО локальной сети. Можно: создать отчет по наличию определенных версий программ и их количеству на компьютерах. Также, легко создается отчет в том числе и по версиям всех операционных систем, включая: установленные обновления ОС, «заплатки». Аналогично можно проверить: наличие установленных кодеков, либо наличие программ в автозагрузке.

Как найти определенные программы в компьютерах локальной сети (только для Pro):

В приведенном выше примере, считаем количество установленных копий photoshop. Или, допустим, Winrar:

  • Аудит и контроль программного обеспечения. Можно отслеживать изменения в списке установленных программ, одновременно на всех компьютерах сети. Будет легко обнаружить и новые установленные программы, либо новые объекты автозагрузки:

  • Возможно использование автоматического средства контроля всех изменений на компьютерах вашей сети. Эта программа предлагает использовать фоновое сканирование всех компьютеров по расписанию, а оповещение об изменениях – может быть по email.
  • Контроль лицензий на установленное ПО. Вы можете отслеживать правильность всех используемых лицензионных ключей (правда, об алгоритме – в инструкции не сообщается).
  • Наконец, возможен экспорт баз данных этой программы в любую внешнюю БД, что также бывает полезно на практике (поддерживается формат Microsoft).

Особенности версий программы:

  • Бесплатная версия имеет ограничения: позволяет просматривать программное обеспечение на не более чем 10 компьютерах. Бесплатная версия – не создает отчетов.
  • Платная версия называется Pro, и требует покупки лицензии, в зависимости от числа сканируемых компьютеров. Версия имеет мощный генератор готовых отчетов, позволяя контролировать все изменения ПО при последующих проверках. Демо-версия (30 дней) ведет работу с неограниченным числом компьютеров, после чего позволяет работe только с 3-мя компьютерами.

Особенности работы программы:

Программа устанавливается на один компьютер сети, не требуя установки агентов на компьютере пользователей.

Изменения, полученные в отчетах, записываются в журнал. Список параметров, которого – настраивается.

О достоинствах этой программы:

Все данные собираются в данной программе при помощи WMI-технологии. Поэтому, не потребуется установка каких-либо дополнительных программ на компьютеры пользователей. Если же, применение WMI-технологии в данной сети – не возможно (иногда ограничения вносит политика безопасности, или Windows Home-версий), программа поддерживает еще два разных способа сбора информации с локальных ПК. Инвентаризационную базу данных программы можно вести, внося сведения об изменениях, даже для станций (компьютеров), не подключенных к сети.

Программа пишет все данные в собственную инфо-базу, что позволяет администратору просматривать списки установленного ПО всех ПК в любой момент времени, в том числе, без подключения этих ПК к локальным сетям.

Контроль и учет серийных номеров и лицензий осуществляется просто: вы вносите число уже имеющихся лицензий, и правильные значения ключей в программу. Затем, отслеживать как превышение числа копий программ, так и «левые», можно автоматически.

Коротко – о технологии wmi

Технология WMI - прежде всего, это расширенная, адаптированная под нужды Windows реализация одного из стандартов WBEM, принятого для многих операционных систем. В основе стандарта – универсальный интерфейс мониторинга (а еще – управления системами и компонентами) в распределенной среде с использованием ООП-технологий и протоколов уровня HTTP (HTML, XML).

Используется объектно-ориентированный подход для представления всех компонентов системы, вне зависимости (без разделения) на аппаратную и програмную часть. В то же время, такая модель объектов является и расширяемой, что позволит программам, устройствам и драйверам добавлять в модель свои классы. Модель протокола WBEM носит название CIM.

WMI, унаследованный от CIM, является также открытой и унифицированной системой, включающей интерфейсы доступа к параметрам как операционной системы, так и устройствам и приложениям, функционирующим в данной момент.

Особенностью WMI считается то, что хранящиеся его объекты соответствуют так называемым динамическим ресурсам системы, то есть параметры всех ресурсов могут меняться, вот почему параметры объектов здесь не хранятся, а создаются, лишь – по запросу самих потребителей. Хранилище свойств WMI называется репозитарием, находится он в системной папке самой ОС Windows:

%SystemRoot%\System32\WBEM\Repository\FS

Получается, там где нет WMI - с успехом можно использовать ее открытый стандарт (то есть, WBEM).

Технология WMI – на данный момент используется в: Windows Me/200х/XP или выше.

В дословном переводе, WMI – инструментарий по удаленному управлению Windows. Любая программа учета программного обеспечения,работающая по WMI, использует только часть функций (выполняющих только лишь чтение данных, без изменения системных значений).

На этом обзор технологии мы завершим.

Non-free 1

Network Asset Tracker - универсальное средство по инвентаризации вашей сети, позволяющее за один клик получать информацию о компьютерах данной сети. В отчете здесь вы увидите: во-первых, детальную информацию об операционных системах, включая время установки и регистрации, ключ, и т.д., информацию об оборудовании, а также, запущенных в данный момент процессах. Информация о любых приложениях, установленных на ПК сети, включая и лицензионные ключи, ими используемые – выводится менее, чем за минуты. Официальная страница программы: http://www.misutilities.com/network-asset-tracker-pro

Network Asset Tracker также поможет отслеживать все изменения, как в оборудовании, так и в программах. Построитель отчетов с массой возможностей – экономит время при построении любых готовых отчетов и графиков. Отчет может экспортироваться в: HTML, Excel .xls, также формат CSV, или же, в RTF. К особенности данного обеспечения относится, в том числе, и возможность сканировать различные сетевые устройства, помимо ПК. В их числе: маршрутизаторы, свичи, LAN/WAN роутеры, сетевой принтер, и т.п.

Программа Network Asset Tracker собирает информацию о всех компьютерах, подключенных к вашей сети, 3-мя из возможных способов:

  • удаленно, без установки дополнительных приложений на рабочие станции (протокол WMI);
  • используя установку на удаленные станции модуля (то есть, агента);

Полученная информация хранится в одном из 4-ех видов баз данных (что удобно для быстрого использования данных сторонней программой):

  1. MS Access
  2. Firebird
  3. Oracle
  4. MS SQL

Для инспектирования «софта», вы запускаете только одну копию этой программы. Требуется установка (поддерживается Win 200х или выше). Network Asset Tracker удаленно читает ключи продуктов для большинства версий Microsoft Windows и Office, также для SQL Server и большого числа официальных программных продуктов иных фирм. Отслеживается: название/версия для установленного ПО, версия дополнений, и соответствие лицензионных ключей. Подробнее:

  1. информация об установленных ОС;
  2. тип, версия, ключ – для ОС;
  3. информация о: сервис-паках, хотфиксах;
  4. информация об общих ресурсах сети;
  5. возможен просмотр списка запущенных приложений (процессов);

В программе, инспектируются ключи и версии в том числе и программного обеспечения «не Microsoft». Приложение наделено богатым функционалом: к примеру, есть поиск файлов в удаленном компьютере (для случая «том – не открыт для сети»). Все платные версии Network Asset Tracker, имеют в названии суффиксы «Pro».

Решение проблем с WMI – наиболее «частые» вопросы

Выше, рассмотрены 3 различных программы, предназначенных для инвентаризации сети. При том, что из них – каждая:

  • помогает вести учет программного обеспечения;
  • работает, используя WMI-технологию (или – как минимум, имеет возможность ее применения).

Если рассматривать проблемы работы с WMI, как единое множество, его можно разбить на два класса:

  • Неверно настроенные права доступа аккаунта (то есть, тому, от имени кого запускается модуль, попросту недостаточно прав для выполнения запроса)
  • Проблемы с WMI, имеющиеся на наблюдаемой станции (агенте)

Проверять работу WMI на каждом компьютере можно (и нужно), даже не дожидаясь возникновения проблем. Сама компания Microsoft для диагностики предлагает использовать инструмент WMIDIAG. Скачать его – по идее, можно тут: http://www.microsoft.com/downloads/. Скопировав на нужный компьютер, можно эту программу запустить (без установки). Может быть, вам даже не придется использовать никаких ключей (команд). Полное описание работы с программой – в справке по WMIDIAG.

Для доступа к WMI – инфраструктуре, хоть локально, хоть удаленно, используется протокол DCOM. Уровень прав подключившегося пользователя (в нашем случае – сервера), определяется механизмом олицетворения и аутентификации DCOM. Уровни олицетворения могут иметь значения: Anonymous, Identify, также Impersonate и Delegate.

Известно, что при уровне олицетворения ниже, чем Impersonate, никакие запросы удаленно обрабатываться не могут. Ну, а уровень выше, чем Impersonate, то есть Delegate – наоборот, использовать не рекомендуется (команды можно будет выполнять через цепочку нескольких компьютеров).

Уровень олицетворения в DCOM, выбираемый по умолчанию, может зависеть от версии WMI – интерфейса на целевом компьютере. Его можно и изменить, то есть прописать явно, для этого существует только один ключ реестра локальной машины:

SOFTWARE\Microsoft\WBEM\Scripting\Default Impersonation Level

Однако, скорее всего, этого делать не придется: в исполняемых сценариях, нужный уровень олицетворения может быть указан в явном виде (обычно – в момент соединения с интерфейсом WMI).

При работе WMIDIAG, создаются три текстовых файла, помещаемые по умолчанию в директорию %TEMP%:

  1. файл.log (информация о деятельности утилиты);
  2. файл.txt, содержащий отчет с предупреждениями/ошибками;
  3. файл.csv, который содержит статистику.

На рисунке мы видим как раз содержимое.txt отчета, где WMIDIAG нам указывает возможный источник ошибок (в данном случае – это провайдер DLL, то есть отсутствие его регистрации в системе).

Также, мы слукавим, если не скажем здесь о встроенном средстве тестирования интерфейса WMI – программе WBEMtest. Утилита – графическая, но сначала мы в консоли наберем слово wbemtest (с правами администратора, конечно), и увидим окно:

Галочку «All Privileges» – мы «включаем», затем – нужно нажать «Connect».

В поле пространства имен должен быть вписан rootCIMv2, жмем «Connect» второй раз.

Таким образом, вы получите список всех классов, определенный в локальном репозитарии WMI (принадлежащих пространству имен CIMv2). Если вместо этого появилось бы сообщение об ошибке, мы бы сделали вывод, что такое пространство имен WMI – не зарегистрировано (зарегистрировано неправильно).

Non-free 2

Alloy Discovery – комплексное решение, предназначенное для инвентаризации сети с ПК под управлением систем Windows, также Mac OS Х, Linux. Программа работает с собираемой в сети информацией как о компьютерном оборудовании, так и программном обеспечении, и подходит для использования сетевыми администраторами и поставщиками ИТ-услуг. Раньше, продукт носил название Alloy Network Inventory, общее для линейки продуктов. Фирма-производитель сообщает, что их решения предназначаются организациям и предприятиям малого и среднего бизнеса.

Официальная страница, подробно сообщающая о возможностях программы, находится здесь: . Основные же сведения – можно получить из вкладки «о Продукте».

Программа предназначена для автоматического сбора и обработки любой информации о компьютерах, при этом используются различные методы аудита (либо – с применением аудит-агента, либо – без него). Существует возможность устанавливать аудит-агенты для систем Windows, Linux или Mac OS, во всех случаях возможен аудит компьютеров по расписанию.

Удаленный аудит компьютеров внутренней сети – выполняется как по запросу, так и в автоматическом режиме (по расписанию). Выполнять аудит компьютеров, в данный момент не подключенных к сети, можно вручную (используется флэшь-накопитель).

Анализировать собираемую информацию можно, используя различные методы ее фильтрации, также – группировки и сортировки всех данных. Можно включить встроенные алгоритмы по анализу потенциальных нарушений безопасности (выполняются на основе информации об автоматическом запуске приложений, и других свойств). Отслеживать все неполадки, и возможные проблемы в программном обеспечении, предполагается с использованием консолидированных журналов событий.

Наконец, экспорт данных проведенной инвентаризации возможен в формат XML, CSV, HTML и Excel .xls.

Текущая версия программы – 5.1.1.В версии 5.1 – доступны улучшения:

  • Безагентовый аудит для Linux и Mac OS X компьютеров;
  • Обнаружение и идентификация ПК с помощью протокола SNMP;
  • Безагентовый аудит по расписанию;
  • Автоматический сбор информации центра обеспечения безопасности MS Windows;
  • Возможность отображения данных в стандарте Юникод.

И другое. Имеется набор «предварительно настроенных» внешних аудируемых программ, а предустановленные отчеты (например: «Топ 10 Программного Обеспечения») помогут упростить и ускорить работу администратора. Менять структуру одного из стандартных отчетов, либо создать шаблон отчета «с нуля» – позволит встроенная функциональность программы.

Делаем выводы

С любого компьютера локальной сети, информация может сниматься при помощи WMI-сервиса. Конечно, если на рабочих станциях – установлена Windows (начиная с Millenium), и соответствующим образом настроены права. Если, допустим, в сети есть компьютеры, где установлен Linux (или другая не-Windows система) – что ж, к вашим услугам – похожая функциональность, только потребуется установка «агентов».

Аудит же для Linux и Mac OS «без агентов» – возможно, идет при использовании WBEM (известно, что WMI-протокол создавался на основе CIM – протокола работы для WBEM). А может быть, платные версии могут использовать что-то другое (фирмы – не раскрывают секретов). В конечном счете, аудит ПО возможен и без использования локальной сети (тогда, администратору придется вносить в базу данных все изменения, касающиеся «локальных» программ).

Иногда, при использовании «бесплатных» решений, можно получить – ту же (правильнее сказать – «достаточную») функциональность. Коммерческий «софт» может быстрее работать в сети (используя патентованные алгоритмы) – в то же время, что вряд ли важно в случае сети с «несколькими» ПК. Выбор – за администратором данной локальной сети, предприятия, организации.

Позволит вам:

  • Вести общую базу всего оборудования компании;
  • Отслеживать замену комплектующих;
  • Создавать отчеты для замены старого оборудования.
Рекомендован при совпадении любого из условий:
  • Рабочих станций от 50;
  • Серверов от 25.

Цена

Windows Server - 5 000 рублей, UNIX - 7 000 рублей.

Хотите дешевле? Пожалуйста! Ниже описан пакет услуг. Вы можете исключить из него несколько пунктов и получить скидку.

Или наоборот - добавить дополнительные пункты, и цена станет больше.

В стоимость входит:

  • Сборка RAID ;
  • Установка, настройка и обновление операционной системы;
  • Настройка сервера инвентаризации;
  • Добавление в систему имеющееся оборудование;
  • Обучение базовому обслуживанию (добавление новых устройств);
  • Настройка автоматического резервного копирования.

Читайте также

Сервер. Для компании, где работает до 15 человек, чаще всего, достаточно сервера класса micro (от 8 000 рублей). В компаниях от 15 человек или при активной работе с сервером необходимо оборудование более высокого класса (от 80 000 рублей). Также есть варианты аренды сервера (от 700 рублей в месяц).

Программное обеспечение. На базе UNIX программное обеспечение приобретать не нужно, так как большинство дистрибутивов распространяется бесплатно. В случае с Windows необходимо приобрести лицензию на Windows Server (около 30 000 рублей) + Windows Server Call на каждого сотрудника (около 1 000 рублей за пользователя).

Консультации по выбору оборудования или программного обеспечения осуществляю бесплатно.

Если сервер находится за пределами Санкт-Петербурга, возможен вариант удаленной настройки. В данном случае, работы проводятся по 100%-й предоплате.

Включает следующие проверки:

  • Журналов событий на предмет ошибок;
  • Наличие свободного дискового пространства;
  • На вирусы;
  • Нормальной работы всех сервисов;
  • Выполнение резервного копирования.
Также возможен вариант удаленной поддержки.

Добрый день!
Начну без прелюдии!

Была задача провести инвентаризацию установленного в офисе ПО. Конечно есть много разного софта на эту тему, но их надо либо покупать, либо воровать.
Долгие поиски по сети привели меня сюда .
Отличный скрипт, отлично документирован, отлично работает.
Я не важно пишу скрипты, поэтому я решил допилить этот скрипт (а не выдумывать новый) под свои нужды.

Итак, в скрипт были внесены следующие изменения:
1. Отключены все диалоговые окна, так как процесс работы скрипта был утомительным ибо если компьютер из списка не доступен (а таких было много) приходилось часто щелкать мышью
2. Вывод недоступных компьютеров в отдельную папку в виде файла с именем этого компьютера (вывести в отдельный файл списком не получилось)
3. Выполнения скрипта для каждого компьютера из списка представленного тхт файлом
4. Добавление версии установленной программы
5. Отключение вывода не очень нужной для меня информации

"настройки для инвентаризации программ
Const UPDATES = False "не учитывать обновления
Const TITLE = "Инвентаризация установленных программ" "заголовок диалоговых окон
Const DATA_DIR = "soft\" "каталог для сохранения отчетов + "\" в конце
Const Error_Dir = "Error\" " Каталог для файлов ошибок
"Const DATA_DIR = "\\SRV\Invent\soft\" "сетевой ресурс для сохранения отчетов + "\" в конце

"настройки для инвентаризации обновлений
"Const UPDATES = True "учитывать только обновления
"Const TITLE = "Инвентаризация установленных обновлений" "заголовок диалоговых окон
"Const DATA_DIR = "updates\" "каталог для сохранения отчетов + "\" в конце
"Const DATA_DIR = "\\SRV\Invent\updates\" "сетевой ресурс для сохранения отчетов + "\" в конце

"прочие настройки
Const DATA_EXT = ".csv" "расширение файла отчета
Const SILENT = False "тихий режим отключен, будет запрошено имя компьютера
"Const SILENT = True "режим отчета о локальном компьютере без вывода диалогов
Const HEAD_LINE = True "выводить заголовки в первой строке CSV-файла

"не завершать скрипт аварийно
On Error Resume Next

"== ВЫПОЛНЕНИЕ

"Указываем файл-источник и необходимые переменные
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("Указать место откуда брать список компьютеров")" Список компьютеров
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString

"Начало цикла перебора комьютеров

While Not TextStream.AtEndOfStream

"глобальные переменные
Dim comp, wmio

"узнать имя локального компьютера
Dim nwo
Set nwo = CreateObject("WScript.Network")
comp = LCase(nwo.ComputerName)

"запросить имя удаленного компьютера
If Not SILENT Then
comp = TextStream.ReadLine()
"проверить доступность компьютера
If Len(comp) > 0 And Unavailable(comp) Then


Set TextStream1 = FSO1.CreateTextFile(Error_Dir & comp,True) "Создаем файл с именем недоступного компьютера

TextStream1.Close
comp = ""

End If
End If

"провести инвентаризацию
If Len(comp) > 0 Then InventSoft

"если ошибка
If Len(Err.Description) > 0 Then

Set FSO1 = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO1.CreateTextFile(Error_Dir & comp & Err.Description,True) "Создаем файл с именем недоступного компьютера

End If
" Конец цикла
Wend

TextStream.Close

"== ПОДПРОГРАММЫ

"обращение к WMI оформлено в подпрограмму, чтобы можно было корректно обработать возможную ошибку
Sub InventSoft

"подключить реестр удаленного компьютера через WMI
Set wmio = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\" & comp & "\Root\default:StdRegProv")

"создать файл отчета
Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(DATA_DIR) Then
If Not SILENT Then MsgBox "Не найден каталог для сохранения отчета:" & vbCrLf & DATA_DIR, vbExclamation, TITLE
Exit Sub
End If
Set tf = fso.CreateTextFile(DATA_DIR & comp & DATA_EXT, True)

"записать заголовки столбцов
If HEAD_LINE Then tf.WriteLine "Название и Версия"

"искать программы и оформить текст для отчета
Dim s
s = ExtractSoft("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\")
If Len(s) > 0 Then tf.Write s

"для 64-битных систем есть еще другой ключ! (32-битные программы на 64-битной системе)
s = ExtractSoft("SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\")
If Len(s) > 0 Then tf.Write s

"закрыть файл отчета
tf.Close

"проверить указанный ключ реестра; вернуть строку для записи в файл отчета
Function ExtractSoft(key)

"получить коллекцию
Const HKLM = &H80000002 "HKEY_LOCAL_MACHINE
Dim items
wmio.EnumKey HKLM, key, items
If IsNull(items) Then
ExtractSoft = ""
Exit Function
End If

"отобрать нужные элементы
Dim s, item, ok, name, publ, inst, x, prev
s = "" "результат накапливать в строке
For Each item In items

Ok = True "флаг продолжения

"название, пропускать пустые и повторяющиеся
prev = name
wmio.GetStringValue HKLM, key & item, "DisplayName", name
If IsNull(name) Or Len(name) = 0 Or name = prev Then
ok = False
Else "не допускать символ ";"
name = Replace(name, ";", "_")
End If

"отделить заплатки, по значению параметра ParentKeyName = "OperatingSystem"
If ok Then
wmio.GetStringValue HKLM, key & item, "ParentKeyName", x
"для программ
If UPDATES Then
If IsNull(x) Or x <> "OperatingSystem" Then ok = False
"для обновлений
Else
If Not IsNull(x) And x = "OperatingSystem" Then ok = False
End If
End If

"Версия
If ok Then
wmio.GetStringValue HKLM, key & item, "DisplayVersion", publ
If IsNull(publ) Or Len(publ) = 0 Then publ = "-"
End If

"If ok Then s = s & name & ";" & publ & ";" & inst & vbCrLf
If ok Then s = s & name & publ & ";" & vbCrLf

Next
ExtractSoft = s

"проверить доступность компьютера в сети; вернуть True, если адрес недоступен
Function Unavailable(addr)
Dim wmio, ping, p
Set wmio = GetObject("WinMgmts:{impersonationLevel=impersonate}")
Set ping = wmio.ExecQuery("SELECT StatusCode FROM Win32_PingStatus WHERE Address = "" & addr & """)
For Each p In ping
If IsNull(p.StatusCode) Then
Unavailable = True
Else
Unavailable = (p.StatusCode <> 0)
End If
Next
End Function

Вот собственно и все. Сердечно благодарю автора скрипта Павела Железнова. Думаю в полной мере назвать эту статью плагиатом нельзя, и надеюсь это будет кому-то полезно.

З.Ы. Исходный скрипт, легко добавляется в групповые политики, и будет постоянно поддерживать актуальную информацию об установленном в сети ПО на Windows машинах.

Теги: инвентаризация, скрипты

17 февраля 2012 в 14:50

Срочная инвентаризация. Или хочу всё знать

  • Системное администрирование

Захотелось поделится с хабросообществом парой способов провести инвентаризацию техники быстро и без особых усилий. Сподвигла меня вот , но как сторонник UNIX-way я расскажу способы сделать всё то же самое и даже больше без необходимости окружать себя гомогенной сетью из одинаковых рабочих станций или привязки к одной технологии.

Что мы хотим?

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

Способ первый, без затрат.

Хотим мы получить инфу о начинке системных блоков организации, например для составления плана модернизации. Вы слышали про встроенную в Windows команду SYSTEMINFO? А она очень полезная. Даст вам информацию о всей системе в удобоваримом виде:
Имя узла: VIRTUAL-PC Название ОС: Microsoft Windows 7 Версия ОС: 6.1.7601 Service Pack 1 сборка 7601 Изготовитель ОС: Microsoft Corporation Параметры ОС: Рядовая рабочая станция Сборка ОС: Multiprocessor Free Зарегистрированный владелец: virtual Зарегистрированная организация: Код продукта: ****************** Дата установки: 12.03.2011, 5:28:25 Время загрузки системы: 15.02.2012, 13:21:15 Изготовитель системы: innotek GmbH Модель системы: VirtualBox Тип системы: X86-based PC Процессор(ы): Число процессоров - 1. : x64 Family 6 Model 15 Stepping 11 Genuin eIntel ~2574 МГц Версия BIOS: innotek GmbH VirtualBox, 01.12.2006 Папка Windows: C:\Windows Системная папка: C:\Windows\system32 Устройство загрузки: \Device\HarddiskVolume1 Язык системы: ru;Русский Язык ввода: en-us;Английский (США) Часовой пояс: (UTC+04:00) Волгоград, Москва, Санкт-Петербург Полный объем физической памяти: 631 МБ Доступная физическая память: 248 МБ Виртуальная память: Макс. размер: 1 655 МБ Виртуальная память: Доступна: 1 056 МБ Виртуальная память: Используется: 599 МБ Расположение файла подкачки: C:\pagefile.sys Домен: *********** Сервер входа в сеть: \\SERVER Исправление(я): Число установленных исправлений - 54. Сетевые адаптеры: Число сетевых адаптеров - 2. : Intel(R) PRO/1000 MT Desktop Adapter Имя подключения: Подключение по локальной сети DHCP включен: Нет IP-адрес : 192.168.16.170 : Intel(R) PRO/1000 MT Desktop Adapter Имя подключения: Подключение по локальной сети 2 DHCP включен: Нет IP-адрес : 192.168.19.1 : ****::25e7:a222:dc08:****

Просто и понятно.
Но не бегать же по всей фирме запуская консоль и копируя вывод команды в текстовик на какой-нибудь шаре. У нас в компании такое в принципе невозможно, политиками запрещено пользователям запускать CMD, а при использовании «Запуск от имени» все переменные окружения летят в тартарары. Что делать? ВАШЕМУ ВНИМАНИЮ PS-TOOLS !
А конкретнее входящяя в её состав утилита psexec.exe. Но не PSEXEC-ом единым жив человек, вывода на экран нам мало, нам бы это ещё и сохранить всё это безобразие, да желательно с комфортом.
Всё предельно просто:
  • Создаём шару с правами на запись всем подряд, а то мало ли какие урезанные права у рабочих станций (sic! Именно станций, потому как права пользователей этих станций нам не интересны, всё будем делать от своего имени). Ну например \\share\audit\
  • Рисуем файлик в нашими айпишниками. Дело в том, что psexec по неясным причинам не понимает диапазоны адресов типа 192.168.0.1-192.168.0.254 или 192.168.0.0/24. Его, конечно, можно обмануть и подсунуть подобное, но это не стабильно и вредно, ниже объясню почему. Я пользуюсь OO Calc для создания списка IP-адресов. В итоге получаем текстовик (.txt) с примерно таким содержимым:
    192.168.0.1 192.168.0.2 ... 192.168.0.254
    192.168.16.255 - широковещательный и не нужно его использовать. Так же из списка можно исключить адреса оборудования и серверов к которым Вы подключаться не хотите. Можно использовать и список с именами компов, но я так не делаю.
Далее, открываем cmd и пишем:
psexec.exe @c:\ip-list.txt -d -n 12 systeminfo > \\share\audit\%COMPUTERNAME%.txt

ip-list.txt - это текстовик с ip-адресами.
-d - значит, что psexec не будет ждать пока команда исполнится, а просто запустит systeminfo как демон и отключится от клиента.
-n 12 - это период ожидания ответа клиента (вообще-то правельнее СЕРВЕРА, но так и запутаться недолго), у меня 12 секунд. Если за это время не удастся подключится, то psexec его пропустит. Для пустых IP это не нужно, а вот ко всяким сетевым принтерам и т.п. psexec может пытаться подключится долго и нудно.
Когда скрипт отработает, в \\share\audit\ мы получим кучу текстовиков названых по именам компьютеров в сети. Что с ними дальше делать я попозже расскажу.
Всем хорош этот способ и быстр и прост, но есть у него и недостатки.
  • Тут информация только по содержимому коробки системного блока и чуть-чуть по Windows.
  • Хотя установленные программы хранятся внутри системного блока про них тоже ничего не выводится
  • Даже по внутренностям мало информации, например нет ничего про тип оперативной памяти, только объём. Да и процессор освещён весьма скудно.

Хочу ВСЁ знать

И когда уже недостаточно только отчёта встроенной утилиты на помощ приходит AIDA64 от FinalWire. это тот же EVEREST только уже купленный другой компанией и которому было возвращено историческое название.
В принципе можно обойтись покупкой Business Edition и установкой на все станции. потом разрешить им обмениваться информацией и подключатся друг к другу на коком-нибудь порту, после чего клепать отчёты из приятного интерфейса. Но, во-первых это не тру, а во-вторых с автоматизацией процесса могут возникнуть заминки.
Я обхожусь Extreme Edition, всё то же самое но без сетевых отчётов.
Что бы начать вкушать плоды автоматизации нужно несколько несложных операций.

Теперь используя всё тот же psexec.exe пришем простенький скрипт который будет запускать AIDA на рабочих станциях с нужными нам параметрами:

psexec.exe @c:\ip-list.txt -d -n 12 \\share\audit\aida\aida64.exe /R \\share\audit\%COMPUTERNAME% /TEXT /CUSTOM \\share\audit\aida\aida64.rpf

Параметр /R <путь> - означает что аида не будет выводить отчёт на экран, а будет складывать его по указанному пути. %computername% - это переменная окружения cmd и на каждом компьютере где мы будем запускать Aida она будет соответствовать имени компьютера. Можно использовать любую другую переменную, но так удобнее всего.
Параметр /TEXT - предопределит тип создаваемого отчёта и автоматически подставит нужное расширение файла, поэтому после %computername% не нужно ставить.txt (%computername%.txt) иначе получим %computername%.txt.txt
Параметр /CUSTOM - даёт понять AIDA откуда брать список нужных компонентов отчёта.
Вот и всё. Запускаем эту строку в CMD и смотрим как в шару складываются очень подробные отчёты включающие в себя полную информацию по всей периферии.

В домене

Я добавил исполнение этого скрипта (без части с psexec) в Startup Scripts в политиках домена.
Это было бы не правильно без некоторой доработки, в итоге скрипт в политиках выглядит так:
if not exist \\share\audit\%COMPUTERNAME%.txt (\\share\audit\aida\aida64.exe /R \\share\audit\%COMPUTERNAME% /TEXT /CUSTOM \\share\audit\aida\aida64.rpf) else exit

Благодаря этому, при загрузке, каждый компьютер в сети проверяет, посылал ли он отчёт и если нет, то делает его, а если да, то не делает ничего.
А для того что бы обнавить данные по одной или нескольким машинам, я просто удаляю или переношу соответствующие очёты и через некоторое время у меня свежая инфа.
Внимание: на некоторых экзотических аппаратных платформах (которые AIDA не распознаёт) отработка программы вызывает сбои и даже падения, редкость, но имеет место. По этому на критически важных рабочих станциях и серверах отчёты лучше делать вручную. Полноценно запуская AIDA64 в графическом режиме, тогда компьютер не выдаёт ошибок, а AIDA просто не запускается.

Разбор полученных логов

Я сохраняю отчёты в простом текстовом виде так как пользуюсь для их разбора и анализа bash скрипты, а шара для хранения отчётов хранится на linux машине. По этому если я хочу узнать обо всех машинах: их имя,ip и mac, количество установленной памяти, то делается примерно следующее:
iconv -f cp1251 ./*.txt | egrep -i "Имя компьютера|с ip|с mac|Тип ЦП|Системная память"
Это простейшая обработка, но когда освою парсинг XML на каком-нибудь языке, конечно перейду на отчёты в этом формате.

Лирика

Можно обсудить ещё и возможность удалённого включения рабочих станция, да и управление компьютерами по сети не последний вопрос. Но ничего универсальнее Wake On Lan ещё не изобрели, а многообразие средств удалённого управление столь велико, что не уместится в рамки этой статьи. Тем более это дело вкуса.

Применимо к:Windows Server 2012, Windows Server 2012 R2

В этом техническом обзоре рассказывается о функции инвентаризации программного обеспечения, которая была представлена в Windows Server 2012 R2 и позволяет упростить для администраторов центра обработки данных задачу ведения журналов управления лицензиями на ПО как активами Майкрософт для своих развертываний. Прежде чем использовать инвентаризацию программного обеспечения в Windows Server 2012 R2, установите обновление Windows KB 3000850 и KB 3060681 в каждой системе Windows Server 2012 R2, подлежащей инвентаризации. Эта функция выполняется локально на каждом сервере, подлежащем инвентаризации. Сбор данных с удаленных серверов не выполняется.

Функцию инвентаризации программного обеспечения можно также добавить в две версии Windows Server, предшествующие Windows Server 2012 R2 . Для добавления функции инвентаризации программного обеспечения в Windows Server 2012 и Windows Server 2008 R2 SP1 можно установить следующие обновления:

    Windows Server 2012 (выпуски Standard или Datacenter)

    Примечание

    WMF 4.0 .

    • Пакет обновления WMF 4.0 для Windows Server 2012: KB 3119938
  • Windows Server 2008 R2 с пакетом обновления 1 (SP1)

    Примечание

    Прежде чем применять следующий пакет обновления, убедитесь, что у вас установлено приложение WMF 4.0 .

    • Пакет обновления WMF 4.0 для Windows Server 2008 R2: KB 3109118

Описание компонента

Журнал инвентаризации программного обеспечения в Windows Server - это компонент с простым набором командлетов PowerShell, который помогает администраторам получить список программ Майкрософт, установленных на их серверах. Он также предоставляет возможность периодически собирать и перенаправлять эти данные по сети с помощью протокола HTTPS для статистической обработки. Управление этим компонентом, главным образом для ежечасного сбора и перенаправления, также выполняется с помощью команд PowerShell.

Примечание

Сервер статистической обработки, запущенный в веб-службе, можно настроить отдельно. См. дополнительные сведения о .

Ни один фрагмент данных, собранных журналом инвентаризации программного обеспечения, не передается в Майкрософт в процессе работы этого компонента.

Практическое применение

Интерфейсы инвентаризации программного обеспечения предназначены для сокращения эксплуатационных расходов на получение точной информации о программном обеспечении Майкрософт, локально развернутом на сервере, особенно на множестве серверов в ИТ-среде (при условии, что компонент развернут и работает в ИТ-среде). Возможность перенаправлять эти данные на сервер агрегации (если это задано ИТ-администратором) позволяет собрать данные в одном месте с помощью универсальной автоматической процедуры. Несмотря на то, что аналогичный результат можно получить при опросе интерфейсов напрямую, инвентаризация программного обеспечения при использовании архитектуры перенаправления (по сети), запускаемой на каждом сервере, позволяет устранить множество проблем с обнаружением компьютеров, типичных для многих сценариев инвентаризации программного обеспечения и управления активами. Для защиты данных, перенаправляемых по HTTPS серверу агрегации администратора, используется протокол SSL. Если все данные находятся в одном месте (на одном сервере), их проще анализировать, с ними проще работать, на их основе проще создавать отчеты. Важно отметить, что ни один фрагмент этих данных не передается в Майкрософт в процессе работы компонента. Компонент ведения журнала инвентаризации программного обеспечения и предоставляемые им функции предназначены исключительно для использования владельцем и администраторами лицензированного серверного программного обеспечения.

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

    Удаленное получение информации о перечне программного обеспечения и серверов по запросу от Windows Server.