В Windows 2003 потерялся класс WMI – Win32_Product
Задался собрать с серверов данные об установленном софте средствами PowerShell используя класс WMI Win32_Product, но при первой же попытке выяснилось что класса Win32_Product
Get-WmiObject : Invalid class
At line:1 char:5
+ gwmi <<<< win32_product
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], Managemen
tException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.C
ommands.GetWmiObjectCommand
по умолчанию нет (всякого барахла навалом а три файла по дефолту не положили
) и надо проявить некоторое терпение и потратить немного времени на установку нужных компонентов.
- Устанавливаем WMI Windows Installer провайдера.
- Открыть панель управления.
- Открыть Add Remove Programs аплет.
- Нажимаем Add/Remove Windows Components.
- Выбираем Management & Monitoring Tools.
- Нажимаем кнопку Details.
- Ищем WMI Windows Installer Provider, выбираем его.
- Жмем OK. Жмем Next.
В случае массовой установки придется прибегнуть к второй методике.
Для регистрации нужного компонента необходимы следующие файлы:
- MSI.MFL
- MSI.MOF
- MSIPROV.DLL
Копируем файлы из дистрибутива (в сжатом виде) себе на диск, создаем текстовый файл (AnswerFile.txt) ответов следующего содержания:
[Components] WbemMSI = On
Подготавливаем скрипт (install.bat).
expand c:\TEMP\msi.mf_ c:\windows\system32\wbem\msi.mfl expand c:\TEMP\msi.mo_ c:\windows\system32\wbem\msi.mof expand c:\TEMP\msiprov.dl_ c:\windows\system32\wbem\msiprov.dll regsvr32 /s c:\windows\system32\wbem\msiprov.dll Sysocmgr /I:\c:\windows\inf\sysoc.inf /u:c:\TEMP\AnswerFile.txt > c:\TEMP\install.txt exit
Дальше поступаем так как больше привыкли – любым методом копируем файлы AnsverFile.txt, MSI.*_ и MSIPROV.DL_ в папку C:\TEMP на удаленном хосте.
Следующее действие будет завершающим и опять же, кто к чему привык, запускаем на выполнение файл install.bat с помощью psexec-а или с средствами WMI.
Похожие статьи
Информация об авторе
|
|
Сергей Мариничев. Вы можете присоединиться ко мне в Facebook или в Twitter. |
А также бесплатно подписаться по E-mail и получать актуальную информацию в числе первых.
Вы можете оставить комментарий.
Плохой и не нужный класс,лучше использовать реестр в разы быстрее.Некоторый пояснения дал у себя в блоге – http://wp.me/p1enQ2-5
KazunЦитировать
Я бы поспорил насчет его нужности и ненужности. Я бы его назвал слегка «недоделанным»
То что он жутко тормознутый это да…
Таких еще поискать надо.
Реестр в разы быстрее но ничто не мешает удалить из него ветку и тогда искать по нему нет никакого смысла.
Есть ли возможность удаления записей из WMI?
Сергей МариничевЦитировать
Почему ненужный?
У него есть метод удаления
задаешь маску и найденным результатам говоришь install
johnЦитировать
Удалите,и этот класс сразу сойдет на нет.
KazunЦитировать
Хороший метод
Главное радикальный.
Сергей МариничевЦитировать
Более мощное средство это msiexec,так что не страшно.
KazunЦитировать
Предполагается следующий сценарий.
1. Вас наняли для того что бы навести порядок в неком парке в котором годами никто не принимал участия.
2. Вы посмотрев что установлено из софта выпадаете в осадок потому что там есть все и всех версий.
Большинство софта можно найти через реестр, у него есть методики удаления, но часть софта не отфильтровать и не удалить потому что там очень много различных версий.
Этот софт виден через Win32_Product.
Ответ напрашивается сам собой – почему не использовать Uninstall?
Что бы использовать msiexec нужно иметь исходный пакет.
JohnЦитировать
Если посмотреть данные вывода Win32_Product,там свойство IdentifyingNumber : {ADBD6E65-46CB-4A97-9AFB-64963FEACC40},которое он берет из реестра,так что с удалением ничего не получится. =)
KazunЦитировать
Виден через Win32_Product,виден и через реестр.Метод Uninstall запрашивает строку из реестра,собственно там есть строка удаления для msiexec.Так что не убедили.
KazunЦитировать
Оно понятно, но поиск для поиска по реестру код будет больше чем одна строка с like в запросе.
Убедил?
С другой стороны, если подходить основательно то можно нарисовать искалку по реестру и вызов Uninstall string из него же.
JohnЦитировать
Отчасти,а когда требуется не только msi,тогда что?
KazunЦитировать
Тогда только реестр.
JohnЦитировать