Så här kontrollerar du snabbt installerade programversioner

det finns situationer där du måste kontrollera om du eller dina användare har viss programvara installerad och vad är dess version. Du kanske vill kontrollera om programvaran är uppdaterad eller om din GPO-distribuerade programvara har installerats för en viss användare. Jag visar dig flera metoder du kan använda för att kontrollera det med PowerShell.

hur man kontrollerar installerad programvaruversion

snabb navigering:

  • kontrollera installerad programlista lokalt
    • Get-WmiObject
    • Registerfråga
    • Händelselogg
  • kontrollera installerad programlista på distans
    • Get-WmiObject
    • Registerfråga
    • Händelselogg
  • kontrollera om GPO-distribuerad programvara har tillämpats

kontrollera vad som är installerat på din dator

för att kontrollera vilken programvara som är installerad kan du alltid använda program och funktioner i kontrollpanelen eller bläddra bland alla diskpartitioner på jakt efter en specifik app. Du kan till och med försöka hitta en app i Start-menyn för att starta den och söka efter dess versionsnummer manuellt. Problemet med dessa metoder är dock att de är så långt ifrån ”snabba och automatiska” som de kan vara. Genom att kontrollera de installerade programversionerna med PowerShell kan du samla in data som du behöver mycket snabbare.

hämta installerad programvarulista med Get-WmiObject

firstmethod är lika enkelt som att klistra in en enkel fråga:

Get-WmiObject -Class Win32_Product
hur man kontrollerar installerad programvaruversion-Get-WmiObject

du kan också enkelt filtrera data för att hitta specifika applikationer från en enda leverantör, tillsammans med deras versioner, till exempel:

Get-WmiObject -Class Win32_Product | where vendor -eq CodeTwo | select Name, Version
hur man kontrollerar installerad programvaruversion-Get - wmiobject filtrerad

trotsatt vara väldigt lätt, den här metoden har en stor nackdel-det tar ganska lång tid attåtervända resultaten.

fråga registret förinstallerad programvara

en Annanmetod för att få en lista över installerad programvara frågar registret. Thefollowing short script returnerar listan över program tillsammans med deras versioner:

$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')}
hur man kontrollerar installerad programvaruversion-registry query

nu, ta aquick titta på HKLM elementet fetstil ovan. Det betyder att listan överprogramvara som returneras av skriptet är all programvara installerad på LM – localmachine. Applikationer kan dock installeras per användare också. För att returnera alist av applikationer för den för närvarande loggade användaren, ändra HKLM till HKCU (CU står för ”aktuell användare”):

$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')}

Hämta listan övernyligen installerad programvara från händelseloggen

om du villkontrollera endast den nyligen installerade programvaran kan du använda följande cmdletto-sökning genom händelseloggen.

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

den här metoden för att ta reda på installerad programvara är mest tillförlitlig för de nyligen tillagda elementen eftersom händelseloggar som standard är inställda på att skriva över de äldsta posterna(cirkulär loggning).

Läs mer om att använda PowerShell för att kontrollera Windows händelseloggar och filtrera resultat

hämta en lista över installeradeprogramvara på distans

var och en av metoderna som nämns ovan kan också användas för att kontrollera programvara installerad på andra maskiner i samma nätverk. Om du skapar en lista över alla datornamn i ditt nätverk kan du använda metoderna nedan i en Foreach-slinga för att returnera resultat från mer än en enda fjärrdator.

$ pcname i varje skript står för namnet på fjärrdatorn där du vill få en lista över installerad programvara och deras versioner.

få installerat softwarelist med remote Get-WmiObject kommando

Thefollowing cmdlet är, återigen, det enklaste i gäng, men kan ta lite tid tofinish:

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

där$pcname är namnet på den dator du vill fråga.

kontrollera installerad programvaramed fjärrregisterfråga

Fjärrregisterfrågor är något mer komplicerade och kräver att Fjärrregistertjänsten körs. En exempelfråga är som följer:

$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
så här kontrollerar du installerad programvaruversion-registry query table view

kontrollera nyligen installeradprogramvarulista från händelseloggen på distans

kontrollera ausers händelselogg på distans kräver att du lägger till ett enda attribut (- datornamn) till cmdlet som användes tidigare:

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

kontrollera om en GPO-distribuerad programvara tillämpades framgångsrikt

om du tillämpade en viss programvaruversion via GPO kan du enkelt kontrollera om detta GPO framgångsrikt tillämpades på en användare eller inte. Allt du behöver är gpresult-verktyget ochnamn på måldatorn och användaren:

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

Leta sedan efter ditt GPOname och kontrollera om det är listat under tillämpade GPO eller nekade GPO.Provet GPO nedan finns i gruppen Applied GPO.

så här kontrollerar du installerad programvaruversion - gpresult html-rapport