Slik sjekker du installerte programvareversjoner
det er situasjoner der du må sjekke om du eller brukerne har bestemt programvare installert, og hva er dens versjon. Det kan være lurt å sjekke om programvaren er oppdatert eller OM GPO-distribuert programvare er installert for en bestemt bruker. Jeg viser deg flere metoder du kan bruke til å sjekke det Med PowerShell.
Rask navigering:
- Kontroller installert programvareliste lokalt
- Get-WmiObject
- Registerspørring
- Hendelseslogg
- Sjekk installert programvareliste eksternt
- Get-WmiObject
- Registerspørring
- Hendelseslogg
- Sjekk om gpo-distribuert programvare ble brukt
Sjekk hva som er installert pådatamaskinen din
for å sjekke hvilken programvare som er installert, kan du alltid bruke Programmer og Funksjoner I Kontrollpanelet eller bla gjennom alle diskpartisjoner på jakt etter en bestemt app. Du kan til og med prøve å finne en app i Start-menyen for å starte den og søke etter versjonsnummeret manuelt. Problemet med disse metodene er imidlertid at de er så langt fra «rask og automatisk» som de kan være. Ved å sjekke installerte programvareversjoner ved Hjelp Av PowerShell kan du samle data som du trenger mye raskere.
Få installert programvare liste Med Get-WmiObject
den firstmethod er så enkelt som å lime inn en enkel spørring:
Get-WmiObject -Class Win32_Product
du kan også enkelt filtrere dataene for å finne bestemte programmer fra en enkelt leverandør, sammen med sine versjoner, for eksempel:
Get-WmiObject -Class Win32_Product | where vendor -eq CodeTwo | select Name, Version
Til Tross Forå Være veldig enkelt, har denne metoden en stor ulempe – det tar litt tid åreturnere resultatene.
Spørringsregister forinstallert programvare
En Annen Metode for å få en liste over installert programvare spør registret. Thefollowing short script returnerer listen over programmer sammen med sine versjoner:
$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')}
Nå, ta aquick titt PÅ HKLM-elementet som er uthevet ovenfor. Det betyr at listen overprogramvare returnert av skriptet er all programvare installert på LM – localmachine. Imidlertid kan programmer installeres per bruker også. For å returnere listen over programmer av brukeren logget, endre HKLM TIL HKCU (CU står for «gjeldende bruker»):
$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')}
Få listen overnylig installert programvare Fra Hendelsesloggen
hvis du vilfor å sjekke bare den nylig installerte programvaren, kan du bruke følgende cmdletto-søk gjennom Hendelsesloggen.
Get-WinEvent -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
denne metoden for å finne ut installert programvare er mest pålitelig for de nylig lagt tilelementer fordi, som standard, er hendelseslogger satt til å overskrive de eldste postene (sirkulær logging).
Lær mer om Hvordan Du bruker PowerShell til å sjekke Windows-Hendelseslogger og filtreringsresultater
Få en liste over installertprogramvare eksternt
hver av metodene nevnt ovenfor kan også brukes til å sjekke programvare installert på andre maskiner i samme nettverk. Hvis du oppretter en liste over alle datamaskinnavnene i nettverket ditt, kan du bruke metodene nedenfor i En Foreach-sløyfe for å returnere resultater fra mer enn en enkelt ekstern PC.
$ pcname i hvert skript står for navnet på den eksterne datamaskinen du vil få en liste over installert programvare og deres versjoner på.
Få installert programvareliste med ekstern Get-WmiObject-kommando
Den Etterfølgende cmdleten er igjen den enkleste i gjengen, men kan ta litt tid forfinish:
Get-WmiObject Win32_Product -ComputerName $pcname | select Name,Version
hvor$pcname er navnet på datamaskinen du vil spørre.
Kontroller installert programvaremed ekstern registerspørring
Eksterne registerspørringer er litt mer kompliserte og krever At Den Eksterne Registertjenesten kjører. En prøvespørring er som følger:
$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
sjekk nylig installertsoftware-listen fra Hendelsesloggen eksternt
Kontroll av auser ‘ s hendelseslogg krever eksternt å legge til et enkelt attributt (- Datamaskinnavn) til cmdleten som ble brukt før:
Get-WinEvent -ComputerName $pcname -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
Sjekk om EN gpo-distribuert programvareble brukt med hell
Hvis du anvendteen viss programvareversjon via GPO, kan du enkelt sjekke om DENNE GPO var vellykket brukt på en bruker eller ikke. Alt du trenger Er gpresult-verktøyet ognavn på måldatamaskinen og brukeren:
gpresult /s "PCNAME" /USER "Username" /h "Target location of theHTML report"
Deretter, se etter GPOname og sjekke om det er oppført under Anvendt Gpo eller Nektet Gpo.PRØVEN GPO nedenfor er I Den Anvendte Gpo-gruppen.