Отримати список встановлених програм PowerShell. Видалене видалення програм за допомогою WMI

💖 Подобається?Поділися з друзями посиланням

У роботі адміністратора часто виникає необхідність перевірити, чи встановлена ​​на деякому комп'ютері в мережі певна програма та яку версію. Наприклад, можна перевірити, чи встановлене важливе оновлення, чи всі робочі станції мають правильну версію Office.
Як це зробити за допомогою чи скриптів (на прикладі), розповідається далі.

Ідея заснована на тому факті, що інформація про встановлених програмах знаходиться у системному реєстрі за адресою:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\

Вказана гілка реєстру перераховує лише програми, встановлені «для всіх користувачів», а програми «для цього користувача» перераховані у гілки:
HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall

У Windows x64 список програм зберігається також у папці реєстру:
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

Відповідно, щоб отримати повний список, потрібно просканувати інформацію з усіх трьох гілок реєстру.

Наприклад, на VBScript:

Const HKLM = &H80000002 "HKEY_LOCAL_MACHINE strComputer = "computer" strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" strEntry1a = "DisplayName" strEntry1b = "QuietDisplayName" strEntry2 " = "VersionMinor" strEntry5 = "EstimatedSize" Set objReg = GetObject("winmgmts://" & strComputer & _ "/root/default:StdRegProv") objReg.EnumKey HKLM, strKey, arrSubkeys WScript.Echo "Installed Applications (" & str " & VbCrLf For Each strSubkey In arrSubkeys intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, _ strEntry1a, strValue1) If intRet1<>0 Then objReg.GetStringValue HKLM, strKey & strSubkey, _ strEntry1b, strValue1 End If If strValue1<>"" Then WScript.Echo VbCrLf & "Display Name: " & strValue1 End If objReg.GetStringValue HKLM, strKey & strSubkey, _ strEntry2, strValue2 If strValue2<>"" Then WScript.Echo "Install Date: " & strValue2 End If objReg.GetDWORDValue HKLM, strKey & strSubkey, _ strEntry3, intValue3 objReg.GetDWORDValue HKLM, strKey & str ue3<>"" Then WScript.Echo "Version: " & intValue3 & "." & intValue4 End If objReg.GetDWORDValue HKLM, strKey & strSubkey, _ strEntry5, intValue5 If intValue5<>"" Then WScript.Echo "Estimated Size: " & Round(intValue5/1024, 3) & " megabytes" End If Next

Скрипт підключається до комп'ютера з мережевим ім'ям strComputer, переглядає розділ реєстру SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ і виводить інформацію про програми.

Аналогічні дії можна виконати у командному файлі CMD. Цей командний файлвидає список програм:

@echo off rem Цей командний файл записує список програм, встановлених на rem віддаленому комп'ютері. rem %1 Ім'я мережі комп'ютера у форматі PCNAME (порожнє значення означає rem локальний комп'ютер). rem Визначаємо шлях до папки реєстру set reg_key=hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall if not "%1" == "" set reg_key=\\%~1\%reg_key% rem Перебираємо встановлені програми for /F " tokens=1,2,*" %%a in ("reg query "%reg_key%" /s") do ^ if "%%a" == "DisplayName" echo %%c

Для перевірки того, чи встановлена ​​конкретна програма (за назвою) на одному комп'ютері, можна використовувати наступний командний файл check-app-pc.cmd

@echo off rem Цей командний файл перевіряє, чи встановлено. задана програмана rem віддаленому комп'ютері. rem %1 Повна назва програми або частина назви, наприклад, KB2570791. rem %2 Мережеве ім'я комп'ютера у форматі PCNAME (порожнє значення означає rem локальний комп'ютер). rem Коди, що повертаються: rem 0 Програма встановлена. rem 2 Програму не знайдено. rem 87 Помилка параметрів. set app_name=%1 set pc_name=%2 rem Перевіряємо наявність у списку call apps.cmd %2 | findstr /i "%~1" if errorlevel 1 echo "%~1" program not found&& exit /b 2 echo "%~1" program installed. && exit /b 0

Відповідно, команда check-app-pc.cmd KB2570791 ws_alex перевірить, чи інстальовано оновлення KB2570791 на комп'ютері WS_ALEX.
Тепер можна автоматизувати роботу цього командного файлу, додавши перевірку більшої кількості комп'ютерів у списку. Для цього створюємо командний файл check-app-pclist.cmd із циклом, що перебирає рядки текстового файлу з мережевими іменами комп'ютерів.

@echo off rem %1 Повна назва програми або частина назви програми. rem %2 Ім'я файлу зі списком комп'ютерів. rem Примітка: цей командний файл використовує check-app-pclist.cmd if "%~1" == "" exit /b 87 if not exist %2 exit /b 2 for /F %%a in (%2) do ( echo %%a... call check-app-pc.cmd %1 %%a)

Приклад списку файлів pc.list

SERVER_DB SERVER_FILES WS_ALEX WS_RECEPTION

Тепер за допомогою команди check-app-pclist.cmd KB2570791 pc.list можна перевірити, чи оновлено KB2570791 на кожному комп'ютері, перерахованому у файлі pc.list.

Список встановлених програм по мережі

У цьому посібнику ми покажемо кілька способів отримати список встановлених програм у 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

Як ви бачите, у результуючому списку міститься ім'я програми, версія, розробник та дата встановлення.

Порада. Для 32-бітових програм на x64 версіях Windows, також потрібно брати дані з гілки HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

Експортувати отриманий список у файл 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

Як отримати список інстальованих програм в операційній системі Windows? Список встановлених на комп'ютері програм можна отримати кількома способами.

У цій статті ми розберемо три різних способів: за допомогою командного рядка, Windows PowerShell, та програми CCleaner. Список встановлених програм буде збережено на комп'ютері у текстовому файлі.

Переглянути встановлені програми можна безпосередньо в операційній системі Windows. Також можна ознайомитися з цим списком встановлених програм за допомогою програм оптимізаторів або деінсталяторів (усі встановлені програми ви побачите у вікні програми).

Повний список встановлених програм може знадобитися для таких цілей: встановлення потрібних програм, після встановлення (переустановки) операційної системи Windows, після покупки нового комп'ютера для того, щоб не забути встановити всі необхідні програми, для виявлення небажаного програмного забезпечення, яка проникла на комп'ютер без відома користувача.

Як переглянути список встановлених програм за допомогою командного рядка

Увійдіть у меню "Пуск", запустіть командний рядок від імені адміністратора, а потім ведіть наступну команду:

Залежно від того, що ви хочете: переглянути у вікні інтерпретатора командного рядка список встановлених додатків, або зберегти список інстальованих програм на комп'ютері у вигляді текстового файлу, виконайте відповідні команди.

Щоб переглянути список програм, введіть наступну команду:

Product get name,version

Після введення відповідної команди не забувайте натиснути на клавішу «Enter». Зачекайте трохи, тому що список встановлених програм сформується не миттєво. Ви побачите список встановлених програм у вигляді таблиці.

Щоб зберегти список програм на комп'ютері, введіть команду:

/output:C:\appsfile.txt product get name,version

У таблиці відображається ім'я програми та номер версії програми.

Зверніть увагу, у цій команді вибрано збереження текстового файлу "appsfile" на диску "С". Ви можете вибрати інший диск на своєму комп'ютері, щоб зберегти файл у форматі «TXT».

Як отримати список інстальованих програм за допомогою Windows PowerShell

У Windows 10, або Windows 8, введіть у поле пошуку вираз «powershell» (без лапок). Далі клацніть правою кнопкою миші Windows PowerShell, а потім натисніть «Запустити від імені адміністратора».

У вікні Windows PowerShell введіть команду для відображення списку встановлених програм:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize

Потім натисніть клавішу «Enter».

Якщо ви бажаєте відразу отримати список встановлених програм у текстовому файлі, введіть цю команду:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize > C:\apps-list.txt

Натисніть на клавіатурі на клавішу Enter.

У цій команді вибрано збереження файлу "apps-list" у форматі "TXT" на диску "С".

У таблиці ви побачите: ім'я програми та версію програми.

Для збереження списку програм, отриманих з магазину Windows, виконайте в PowerShell наступну команду:

Get-AppxPackage | Select Name, PackageFullName | Format-Table -AutoSize > C:\store-apps-list.txt

Як зберегти список встановлених програм у CCleaner

У вікні виберіть місце для збереження текстового файлу. За промовчанням збережений файл має ім'я «install».

У файлі зібрані такі відомості про програми: ім'я програми, видавець, дата інсталяції, розмір, версія.

Висновки статті

При необхідності користувач може отримати список програм, встановлених на комп'ютері під керуванням операційної системою Windows. Список встановлених програм можна зберегти на комп'ютері у вигляді текстового файлу за допомогою командного рядка, Windows PowerShell, програми CCleaner.

Я думаю, що всі наші читачі стикалися з необхідністю переустановки Windows. Іноді це відбувається через критичні помилки і проблеми, що виникли, іноді викликано апгрейдом, іноді продиктовано бажанням скинути весь мотлох, що накопичився в системі, і почати комп'ютерне життя з «чистого аркуша». Відразу після встановлення нової системиви ставите необхідні драйвера та системні компоненти, а потім приступаєте до відновлення звичного програмного оточення. Для цього завдання вам знадобиться заздалегідь складений список додатків, особливо якщо він налічує кілька десятків елементів. Зараз ми навчимося його складати (без ручки та паперу! :).

Метод 1. Використовуємо командний рядок

Відкрийте меню Пуск та введіть у рядок пошуку слово «cmd». Клацніть правою кнопкою на знайденому елементі та виберіть у контекстному меню Запустити як адміністратор. У Windows 8 приблизно те саме, тільки замість Пуск натисніть кнопку Win на клавіатурі.

Введіть послідовно дві команди:

WMIC product get name,version

Після нетривалого очікування ви побачите у вікні список усіх встановлених у вашій системі програм.

/output:D:\installedapps.txt product get name,version

Тепер вам залишається тільки відкрити в файловому менеджерідиск D (ви можете, зрозуміло, вказати й інший шлях збереження) і ви побачите там текстовий файл installedapps.txtзі списком усіх встановлених програм .


Метод 2. CCleaner

Для тих користувачів, які ще в дитинстві отримали переляк від чорно-пречорного командного рядка, є більш простий спосіб, але вимагає додаткової програми. У її ролі виступить популярна утиліта CCleaner, встановлена ​​практично на будь-якому комп'ютері. До того ж, цей метод дозволяє згенерувати більше повний списоквашого програмного забезпечення.

Відкрийте CCleaner і перейдіть до розділу Сервіс. Тут ви побачите повний список програм і вам потрібно лише натиснути кнопку Зберегти звіту правому нижньому кутку, щоб зберегти його у текстовий файл.

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

Ті, хто хоче себе трохи помучити, можуть скористатися звичайною командним рядком. Запустивши консоль CMDвід імені адміністратора, виконайте у ній послідовно ці дві команди:

WMIC
/output:D:\myapps.txt product get name, version

Список програм буде збережено у текстовий файл myapps.txtіз зазначенням імені та версії продукту. Спосіб цей, щоправда, дещо «кульгає», - деякі встановлені програми можуть не потрапити до списку. Отримати список встановлених програм можна за допомогою консолі . Для цього використовується наступна команда:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize > D:\apps.txt

Get - ItemProperty HKLM : \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ * | Sel еct-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format - Table -AutoSize & amp; gt; D:\apps. txt

Список програм буде виведений у файл apps.txt, що в корені диска D . Але й цей спосіб має недоліки, оскільки встановлені програми можуть зберігати свої дані у різних ключах реєстру.

Насправді є куди простіший і зручний спосіботримати список встановлених програм. Напевно, у кожного користувача знайдеться на комп'ютері - популярний чистильник дисків. Відкрийте її, перейдіть до розділу «Сервіс»і, перебуваючи на вкладці «Видалення програм», натисніть кнопку «Зберегти звіт»та вкажіть шлях для збереження текстового файлу.

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

Для кожної програми будуть вказані його назва, версія, розробник та дата встановлення.

Розповісти друзям