Создать список установленных программ в Windows с помощью PowerShell
Вы, вероятно, установили десятки программ на своём компьютере. Помимо тех, которые вы используете каждый день (браузер, почтовый клиент и т.д.), легко забыть о редких утилитах. Когда придёт время переустановить систему или купить новый ПК, полезно иметь записанный список приложений.
Windows позволяет быстро сгенерировать такой список с помощью PowerShell. Ниже — пошаговая инструкция, объяснение команд и варианты экспорта (текст, CSV). Также приведены варианты сравнения списков между разными машинами и советы по безопасности.
Что делает базовая команда
Откройте PowerShell (в Пуске введите «Powershell») и вставьте следующую строку, чтобы вывести список программ вместе с издателем и датой установки:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize Пояснение по фрагментам:
- Get-ItemProperty — читает значения из указанных ключей реестра.
- Путь HKLM:\Software\Wow6432Node… — содержит 32-битные приложения в 64‑битной системе. Другие места реестра перечислены ниже.
- Select-Object ограничивает вывод столбцами DisplayName, DisplayVersion, Publisher, InstallDate.
- Format-Table –AutoSize красиво форматирует таблицу для вывода в консоль.
Важно: Format-Table удобен для просмотра в консоли, но при перенаправлении в файл лучше экспортировать в CSV для структурированности.
Сохранение результата в текстовый файл
Чтобы направить вывод в текстовый файл на рабочем столе, добавьте перенаправление. Замените USERNAME на ваше имя пользователя (ниже — более надёжный вариант с переменной окружения):
> C:\Users\USERNAME\Desktop\InstalledProgramsList.txt Вместе (как в исходном примере):
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize > C:\Users\USERNAME\Desktop\InstalledProgramsList.txt Совет: вместо явного имени пользователя используйте переменную окружения $env:USERPROFILE — так команда работает на любой учётной записи:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize > "$env:USERPROFILE\Desktop\InstalledProgramsList.txt"Экспорт в CSV (рекомендуется)
CSV удобнее для импорта в таблицы и для сравнения. Export-Csv сохраняет структуру:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Export-Csv -Path "$env:USERPROFILE\Desktop\InstalledProgramsList.csv" -NoTypeInformation -Encoding UTF8Чтобы получить и 64‑, и 32‑битные записи сразу (полный список), объедините оба пути:
$paths = @(
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
"HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*",
"HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
)
Get-ItemProperty $paths | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Sort-Object DisplayName | Export-Csv -Path "$env:USERPROFILE\Desktop\InstalledProgramsFull.csv" -NoTypeInformation -Encoding UTF8Пояснение:
- HKLM — системный раздел реестра (Local Machine).
- HKCU — установки, специфичные для текущего пользователя.
- Некоторые программы регистрируют себя только в одном из этих мест, поэтому имеет смысл читать все перечисленные ключи.
Преобразование даты установки в читаемый формат
InstallDate часто записан как YYYYMMDD (например, 20200615). Преобразуйте его так:
Get-ItemProperty $paths | Select-Object DisplayName, DisplayVersion, Publisher, @{Name='InstallDate';Expression={ if ($_.InstallDate -match '^\d{8}$') { [datetime]::ParseExact($_.InstallDate,'yyyyMMdd',$null).ToString('yyyy-MM-dd') } else { $_.InstallDate }}} | Export-Csv "$env:USERPROFILE\Desktop\InstalledProgramsReadable.csv" -NoTypeInformation -Encoding UTF8Альтернативы и предупреждения
- Get-WmiObject Win32_Product — иногда упоминают эту команду, но она медленная и может триггерить повторную проверку/переустановку MSI-пакетов. Не рекомендуется для простого чтения списка.
- Get-CimInstance — современная альтернатива WMI, но также не всегда показывает все программы, потому что список формируется на основе зарегистрированных MSI.
- Чтение реестра (Get-ItemProperty) надёжнее для полного перечня, включая не‑MSI установки.
- Для доступа к некоторым ключам реестра администраторские права не требуются, но в отдельных конфигурациях может понадобиться запуск PowerShell от имени администратора.
Important: Сохраняйте файл на внешнем носителе или в облаке. При очистке диска файл будет утерян вместе с системой.
Как сравнить списки с двух компьютеров
Если вы получили CSV-файлы с двух машин, можно сравнить их прямо в PowerShell:
$listA = Import-Csv "C:\Users\UserA\Desktop\InstalledProgramsFull.csv"
$listB = Import-Csv "C:\Users\UserB\Desktop\InstalledProgramsFull.csv"
Compare-Object $listA $listB -Property DisplayName -PassThru | Format-TableРезультат покажет отличия: какие программы присутствуют только в одном из списков.
Альтернативы: загрузите оба TXT/CSV в любой онлайн-сервис сравнения текста или используйте GUI-инструменты (WinMerge, Beyond Compare).
Контрольный список перед переустановкой или миграцией
- Экспортировать полный список (см. $paths) в CSV.
- Сохранить CSV на внешнем носителе или облаке.
- Обозначить критические лицензионные программы и сохранить ключи/аккаунты.
- Сравнить список с целевой машиной (Compare-Object) и отметить отсутствующие.
- Для автоматической установки подготовить список установщиков и скриптов.
Когда метод может не сработать
- Приложения, которые не регистрируют себя в реестре, не появятся (редкие portable‑утилиты).
- Установки, сделанные в нестандартных профилях, могут не попадать в HKCU для текущего пользователя.
- При повреждённом реестре вывод может быть неполным.
Краткое резюме
Используйте чтение реестра через Get-ItemProperty для надёжного списка установленных программ, экспортируйте в CSV для удобства и сравнивайте списки через Compare-Object. Сохраняйте итоговый файл на внешнем носителе.
Критерии приёмки
- На рабочем столе создан CSV или TXT-файл со списком программ.
- Файл содержит, как минимум, DisplayName и DisplayVersion.
- Файл скопирован в безопасное место (флешка/облако).
1‑строчная глоссарий
- PowerShell — современная оболочка Windows для автоматизации и работы с объектами и реестром.
Примечание: если нужны скрипты для массовой переустановки программ по списку — могу добавить шаблон Playbook и примеры автоматизации.
Image Credit: racorn via Shutterstock.com
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone