Lista zainstalowanych programów w Powershell


 

Jakiś czas temu opublikowałem artykuł „Lista zainstalowanych programów w CMD„. Jak wiecie, Powershell rządzi światem ;), zatem wypadało mi opisać to samo zagadnienie w Powershell.

Programy z listy „dodaj usuń programy” w oknie Powershell

Zwolennicy GUI zawsze szukają zainstalowanych programów w Panelu Sterowania, w aplecie „Dodaj Usuń Programy”. Dokładnie tą samą listę wydobędziemy i wyświetlimy w naszej konsoli poleceniem:

get-wmiobject Win32_product

Oto przykładowy wynik (fragment długiej listy):
powershell lista programow
Jak widać, dane są mało czytelne. Raport powinien być bardziej przejrzysty. Możemy pokusić się o eleganckie sformatowanie listy. Na przykład wyświetlimy nazwę programu i producenta:

get-wmiobject Win32_product | select Name,Vendor

Wynik robi się całkiem przyjazny, prawda? :)
powershell lista programow 2
Gdy wspomniałem o liście programów z Panelu Sterowania, wielu z Was powinno od razu rozpoznać problem: Ta lista programów przecież nie jest pełna! Otórz, Wasze maszyny najczęściej będą posiadały software, który będzie nieobecny na powyższej liście. Gdzie znaleźć „lepszą”? Ano, w Rejestrze!

Odczytajmy zawartość odpowiedniego klucza:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*

Oto przykładowy wynik. Dodałem „| more”, aby nie wyświetlać ogromnej liczby wierszy :) (| more wyświetla rezultat porcjami. Kolejne porcje przewijamy spacją).
powershell lista programow 3
Oczywiście wynik możemy sobie ładnie sformatować decydując, które właściwości mają pojawić się w tabeli:

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

Przykładowy rezultat:
powershell lista programow 4

Lista zainstalowanych programów w Powershell na zdalnym komputerze

O zdalnym wykonywaniu poleceń w Powershell był osobny artykuł. Zachęcam do zapoznania się z nim, gdyż to bardzo poważny temat :-D. Tymczasem, my wykorzystamy najprostszą metodę:

invoke-command -computername kwibus10 -scriptblock {Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*}

Cmdlet „GET-WMIOBJECT” ma natomiast wbudowaną flagę do łączenia się ze zdalnymi komputerami:

get-wmiobject -computername nazwa_lub_IP_zdalnego_komputera Win32_product | select Name,Vendor

To wszystko na dziś :) Więcej materiałów o Powershell znajdziecie tutaj: https://spece.it/kurs-powershell Jak zawsze zachęcam do komentowania i dzielenia się swoimi uwagami.


Podobne Tematy: