На этот вопрос уже есть ответ здесь:
Я пытаюсь получить все установленные приложения на компьютерах моего домена, но я не нашел способа получить информацию точным способом сначала я пытался добиться этого с помощью раздела реестра:
HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
, но это вернуло больше информации, чем мне нужно, например, установленные обновления. Итак, я поискал другой способ и обнаружил, что класс wmi Win32_product
содержит все установленные приложения, но после попытки с этим y обнаружил, что воспроизводимая информация неверна
¿почему существуют такие приложения, как google chrome, бесплатный прокси, диагностика системы dell , что не отображается при запросе класса?
In this link is the answer for this question
¡есть способ точно получить все установленные приложения в Windows через PowerShell или командную строку?
WMI-класс Win32_Product
использует MSI-провайдер для сбора данных об установленных программах. Это означает, что вы будете получать данные только по программам/пакетам, установленным с помощью MSI. Далее, вызов этого класса приводит к выполнению действия по ремонту каждой возвращаемой программы. В большинстве случаев это не является проблемой, но это заполнит журнал событий и может вызвать проблемы для некоторого программного обеспечения. Вы можете получить более подробную информацию по этой ссылке: Win32_Product Class
Большинство скрипторов, кодеров и т.д. используют одну из двух вещей; 1) Запрос реестра, 2) WMI-запрос класса SCCM SMS_InstalledSoftware
. Очевидно, что класс SCCM требует установки SCCM на хост. Подробнее об этом можно прочитать в HERE. Так что на самом деле остается только запрос реестра для большинства фолиантов. Не волнуйтесь, потому что вся работа уже сделана за вас TSG.
Ваш горшок с золотом "Use PowerShell to Quickly Find Installed Software"
Хотя я бы делал вещи немного по-другому, чем в этом посте, в нем уже написано все тяжелое. С небольшим количеством способностей и некоторым поиском Google вы можете настроить, как вы хотите.
.Не уверен, что вы намеренно игнорируете 64-битное программное обеспечение, но имейте в виду, что SOFTWARE\Wow6432Node предназначен только для 32-битного программного обеспечения, работающего на 64-битной машине. У вас также есть HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
Если вам нужны все программы, вам нужно будет собрать несколько методов/ресурсов. Эти два ключа должны иметь большинство, если не все. Также необходимо учитывать HKEY_USERS[каждый пользователь]\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ и его Wow6432Node аналог. Такие приложения, как DropBox, иногда google chrome и некоторые другие устанавливаются только в пользовательском окружении. Подозреваю, что именно поэтому Win32_Product не имеет таких специфических пакетов.
Для фильтрации вашего агрегированного списка нет простого способа. Вы можете исключить пакеты с ключом System=1 или Publisher="Microsoft Corporation" (дважды проверьте имя ключа; возможно, я запомнил неправильно). Однако, эти ключи используются и в некоторых несущественных программах.
.Wmic
может быть полезным инструментом для этого.
Например : Wmic получает имя, версию
.
C:\Windows\System32>wmic product get Name, Version
Name Version
Windows 7 USB/DVD Download Tool 1.0.30
Microsoft Office OneNote MUI (English) 2010 14.0.70
...
Oracle VM VirtualBox 5.0.10 5.0.10
Узнайте, что в этой команде может не получиться перечислить некоторые установленные программы. Для меня на Windows 7
не видно, что установлена Opera
.
Также есть много опций для форматирования вывода: http://www.pearsonitcertification.com/articles/article.aspx?p=1700427&seqNum=4