В этой инструкции мы покажем несколько способов получить список установленных программ в Windows 10, Windows 8 или Windows 7 с помощью командной строки. Эта методика построения списка программ в системе может пригодиться перед переустановкой системы, когда нужно найти нежелательное ПО или при выполнении инвентаризации установленного ПО на компьютерах организации.
Рассмотрим два способа: первый подразумевает использование командной строки и утилиты wmic, второй — PowerShell.
Вывод списка программ с помощью утилиты командной строки WMIC
Список установленных в системе программ может быть получен с помощью утилиты командной строки WMIC, через которую можно обратиться и опросить пространство имен WMI. Запустите командную строку с правами администратора и выполните команду:
wmic product get name,version
После небольшого ожидания, на экран консоли будет выведен список названий и версия установленных в системе программ.
Этот список можно экспортировать в текстовый файл с помощью команды:
wmic product get name,version /format:csv > c:\Temp\Programs_%Computername%.csv
После окончания выполнения команды перейдите в каталог C:\Temp и найдите csv файл, имя которого начинается с Programs_[имя_ПК]. В данном файле в csv-формате помимо названия и версии ПО, также будет содержаться имя ПК (удобно для дальнейшего анализа).
Вывод списка программ через Windows PowerShell
Список установленных программ также может быть получен с помощью PowerShell. Идея метода в том, что список установленных программ, который мы видим в списке Programs and Features Панели Управления, строится на основе данных, хранящихся в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Наша задача – вывести содержимое данной ветки реестра. Итак, запустите консоль Powershell и выполните команду:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, Size, InstallDate | Format-Table -AutoSize
Как вы видите, в результирующем списке содержится имя программы, версия, разработчик и дата установки.
Экспортировать полученный список в csv файл можно так:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize > c:\temp\ installed-software.txt
Рассмотренный выше способ позволяет вывести данные только о классический Windows приложениях. Чтобы вывести список установленных Metro приложений, воспользуйтесь командой:
Get-AppxPackage | Select Name, PackageFullName |Format-Table -AutoSize > c:\temp\installed_metro_apps.txt
Чтобы получить список установленного ПО на удаленном компьютере (к примеру, с именем wks_name11), воспользуемся командлетом Invoke-command:
Invoke-command -computer wks_name11 {Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize }
Чтобы сравнить списки установленного ПО, полученные с двух разных компьютеров и найти отсутствующие приложения, можно воспользоваться такой командой:
Compare-Object –ReferenceObject (Get-Content C:\temp\installed-software.txt) –DifferenceObject (Get-Content C:\temp\installed-software2.txt)
В нашем примере в двух сравниваемых списках имеются различия в двух программах.
Другой способ вывести список установленных программ – воспользоваться командлетом Get-WmiObject, также позволяющего обращаться с пространству WMI:
Get-WmiObject -Class Win32_Product | Select-Object -Property Name
Во всех описанных способах список не тот что в Панель управления\Программы\Программы и компоненты. В реестре не у всех программ есть даты установки, а в WMI отображены не все программы.
плюсую, удивился на Windows 11
Для меня, самый простой способ такой: открываешь программу Ccleaner — Инструменты — Удаление программ. Открывается список всех установленных программ, а в правом нижнем углу будет синяя кнопка «Сохранить в текстовом файле». Её жмякаешь и сохраняешь где тебе нужно. Правда текст в итоге не очень хорошо читаем. Поэтому копируем весь текст в Excel и сохраняем в виде удобной таблицы.
Krasavs
Хорошая инструкция о «Закате солнца вручную» 🙂 Этот способ утопия для обработки сотни и тысячи компьютеров 🙂
Интересно, откуда CCleaner и им подобные программы берут эти списки?
Пока только дописал «костыль» с определением даты установки, суть которого если даты нет, то ищем по пути установки дату каталога или файла деинсталятора, практически 99,9% попадание в цель.
Благодарю.
Я делаю проще. Просто запускаю Revo Uninstaller Pro и копирую список.
Дорого дря почему не срабатывает
wmic product where "Name like '%1С:Предприятие%'" get Name, IdentifyingNumber > \\server\LOGS\%computername%-RU.txt
Из CMD Файла ?
в открытой консоли команда работает
При выполнении команды
invoke-command -computer wks_name11 {wmic product get name,version /format:csv > c:\Temp\Programs_%Computername%.csv}
Программы которые имеют русское наименование отображаются в не корректной кодировке типа «wks_name11,ЉЋЊЏЂ‘-3D v21 x64,21.0.24.1407»
Возникает вопрос: как сделать так чтобы была корректная кодировка?
Перед этой командой попробуйте изменить кодировку консоли на UTF8:
[Console]::OutputEncoding = [System.Text.Encoding]::Utf8