Jak szybko sprawdzić zainstalowane wersje oprogramowania

istnieją sytuacje, w których musisz sprawdzić, czy ty lub Twoi użytkownicy mają zainstalowane określone oprogramowanie i jaka jest jego wersja. Możesz sprawdzić, czy oprogramowanie jest aktualne lub czy oprogramowanie wdrożone w GPO zostało zainstalowane dla określonego użytkownika. Pokażę Ci kilka metod, których możesz użyć, aby to sprawdzić za pomocą PowerShell.

jak sprawdzić zainstalowaną wersję oprogramowania

Szybka nawigacja:

  • sprawdź listę zainstalowanego oprogramowania lokalnie
    • Pobierz-WmiObject
    • zapytanie rejestru
    • Dziennik zdarzeń
  • sprawdź zdalnie zainstalowaną listę oprogramowania
    • Pobierz-WmiObject
    • zapytanie rejestru
    • Dziennik zdarzeń
  • sprawdź, czy wdrożone oprogramowanie GPO zostało pomyślnie zastosowane

sprawdź, co jest zainstalowane na twoim komputerze

aby sprawdzić, jakie oprogramowanie jest zainstalowane, zawsze możesz korzystać z programów i funkcji w Panelu sterowania lub przeglądać wszystkie partycje dyskowe w poszukiwaniu określonej aplikacji. Możesz nawet spróbować znaleźć aplikację w menu Start, aby ją uruchomić i ręcznie wyszukać jej numer wersji. Jednak problem z tymi metodami polega na tym, że są one tak dalekie od „szybkich i automatycznych”, jak to tylko możliwe. Sprawdzanie zainstalowanych wersji oprogramowania za pomocą PowerShell pozwala znacznie szybciej zbierać potrzebne dane.

Pobierz zainstalowaną listę oprogramowania za pomocą Get-WmiObject

pierwsza metoda jest tak prosta, jak wklejenie prostego zapytania:

Get-WmiObject -Class Win32_Product
jak sprawdzić zainstalowaną wersję oprogramowania-Get-WmiObject

możesz również łatwo filtrować dane, aby znaleźć konkretne aplikacje od jednego dostawcy, wraz z ich wersjami, na przykład:

Get-WmiObject -Class Win32_Product | where vendor -eq CodeTwo | select Name, Version
jak sprawdzić zainstalowaną wersję oprogramowania-Get-WmiObject filtered

pomimo tego, że jest to bardzo proste, metoda ta ma poważny minus-uzyskanie wyników zajmuje sporo czasu.

rejestr zapytań dla zainstalowanego oprogramowania

innym sposobem uzyskania listy zainstalowanego oprogramowania jest odpytywanie rejestru. Następujący krótki skrypt zwraca listę aplikacji wraz z ich wersjami:

$InstalledSoftware = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"foreach($obj in $InstalledSoftware){write-host $obj.GetValue('DisplayName') -NoNewline; write-host " - " -NoNewline; write-host $obj.GetValue('DisplayVersion')}
jak sprawdzić zainstalowaną wersję oprogramowania-zapytanie rejestru

teraz spójrz na element HKLM pogrubiony powyżej. To znaczy, że listą oprogramowania zwracanego przez skrypt jest całe oprogramowanie zainstalowane na lm-localmachine. Jednak aplikacje mogą być instalowane na użytkownika, jak również. Aby zwrócić listę aplikacji aktualnie zalogowanego użytkownika, Zmień HKLM na HKCU (cu oznacza „bieżący użytkownik”):

$InstalledSoftware = Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
foreach($obj in $InstalledSoftware){write-host $obj.GetValue('DisplayName') -NoNewline; write-host " - " -NoNewline; write-host $obj.GetValue('DisplayVersion')}

pobieranie listy nowo zainstalowanego oprogramowania z dziennika zdarzeń

jeśli chcesz sprawdzić tylko ostatnio zainstalowane oprogramowanie, możesz użyć następującego polecenia do przeszukiwania dziennika zdarzeń.

Get-WinEvent -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *

ta metoda wyszukiwania zainstalowanego oprogramowania jest najbardziej niezawodna dla ostatnio dodanych elementów, ponieważ domyślnie dzienniki zdarzeń są ustawione na nadpisywanie najstarszych rekordów(rejestrowanie okrężne).

dowiedz się więcej o używaniu PowerShell do sprawdzania dzienników zdarzeń systemu Windows i wyników filtrowania

Pobierz listę zainstalowanychsoftware zdalnie

każda z wyżej wymienionych metod może być również użyta do sprawdzania oprogramowania zainstalowanego na innych komputerach w tej samej sieci. Jeśli utworzysz listę wszystkich nazw komputerów w sieci, możesz użyć poniższych metod w pętli Foreach, aby zwrócić wyniki z więcej niż jednego zdalnego komputera.

$pcname w każdym skrypcie oznacza nazwę komputera zdalnego, na którym chcesz uzyskać listę zainstalowanego oprogramowania i ich wersji.

Pobierz zainstalowaną listę oprogramowania za pomocą zdalnego polecenia Get-WmiObject

following cmdlet jest ponownie najłatwiejszy z wielu, ale może zająć trochę czasu, aby go ukończyć:

Get-WmiObject Win32_Product -ComputerName $pcname | select Name,Version

gdzie$pcname jest nazwą komputera, który chcesz zapytać.

Sprawdź zainstalowane oprogramowaniez zapytaniem zdalnego rejestru

zapytania zdalnego rejestru są nieco bardziej skomplikowane i wymagają uruchomienia usługi zdalnego rejestru. Przykładowe zapytanie jest następujące:

$list=@()$InstalledSoftwareKey="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"$InstalledSoftware=::OpenRemoteBaseKey('LocalMachine',$pcname)$RegistryKey=$InstalledSoftware.OpenSubKey($InstalledSoftwareKey) $SubKeys=$RegistryKey.GetSubKeyNames()Foreach ($key in $SubKeys){$thisKey=$InstalledSoftwareKey+"\"+$key$thisSubKey=$InstalledSoftware.OpenSubKey($thisKey)$obj = New-Object PSObject$obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $pcname$obj | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $($thisSubKey.GetValue("DisplayName"))$obj | Add-Member -MemberType NoteProperty -Name "DisplayVersion" -Value $($thisSubKey.GetValue("DisplayVersion"))$list += $obj}$list | where { $_.DisplayName } | select ComputerName, DisplayName, DisplayVersion | FT
jak sprawdzić zainstalowaną wersję oprogramowania-widok tabeli zapytań rejestru

Sprawdź ostatnio zainstalowanesoftware list z dziennika zdarzeń zdalnie

sprawdzenie dziennika zdarzeń ausera zdalnie wymaga dodania jednego atrybutu (- ComputerName) do listy cmdlet używanej wcześniej:

Get-WinEvent -ComputerName $pcname -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *

sprawdź, czy oprogramowanie wdrożone w GPO zostało pomyślnie zastosowane

jeśli zastosujesz określoną wersję oprogramowania za pośrednictwem GPO, możesz łatwo sprawdzić, czy ten GPO został pomyślnie zastosowany do użytkownika, czy nie. Wszystko, czego potrzebujesz, to narzędzie GPResult i nazwy komputera docelowego i użytkownika:

gpresult /s "PCNAME" /USER "Username" /h "Target location of theHTML report"

następnie poszukaj nazwy GPO i sprawdź, czy jest ona wymieniona w obszarze Applied GPO lub Denied GPO.Przykładowy GPO poniżej znajduje się w zastosowanej grupie GPOs.

jak sprawdzić zainstalowaną wersję oprogramowania-gpresult html report