A telepített szoftververziók gyors ellenőrzése
vannak olyan helyzetek, amikor ellenőrizni kell, hogy Ön vagy a felhasználók telepítettek-e bizonyos szoftvert, és mi a verziója. Érdemes lehet ellenőrizni, hogy a szoftver naprakész, vagy ha a GPO telepített szoftver telepítve van egy bizonyos felhasználó számára. Megmutatom néhány módszert, amellyel ellenőrizheti ezt a PowerShell-vel.
Gyors navigáció:
- helyileg ellenőrizze a telepített szoftverek listáját
- Get-WmiObject
- rendszerleíró lekérdezés
- Eseménynapló
- ellenőrizze a telepített szoftverek listáját távolról
- Get-WmiObject
- rendszerleíró lekérdezés
- Eseménynapló
- ellenőrizze, hogy sikeresen alkalmazta-e a GPO által telepített szoftvert
ellenőrizze, hogy mi van telepítve a számítógépére
a telepített szoftver ellenőrzéséhez mindig használhat programokat és funkciókat a Vezérlőpulton, vagy böngészhet az összes lemezpartíció között egy adott alkalmazás kereséséhez. Akkor is megpróbál, és talál egy alkalmazást a Start menüben annak érdekében, hogy indítsa el, és keresse meg a verziószámot kézzel. A probléma azonban ezekkel a módszerekkel az, hogy olyan messze vannak a “gyors és automatikus” – tól, amennyire csak lehet. A telepített szoftververziók ellenőrzése a PowerShell használatával lehetővé teszi, hogy sokkal gyorsabban gyűjtsön adatokat.
Get installed software list with Get-WmiObject
az első módszer olyan egyszerű, mint egy egyszerű lekérdezés beillesztése:
Get-WmiObject -Class Win32_Product
könnyen szűrheti az adatokat, hogy egyetlen gyártótól származó konkrét alkalmazásokat találjon, például azok verzióival együtt:
Get-WmiObject -Class Win32_Product | where vendor -eq CodeTwo | select Name, Version
annak ellenére, hogy nagyon könnyű, ennek a módszernek van egy nagy hátránya – elég sokáig tartvisszaadja az eredményeket.
query registry forinstalled software
a telepített szoftverek listájának lekérdezésének másik módja a rendszerleíró adatbázis lekérdezése. A következő rövid szkript az alkalmazások listáját adja vissza azok verzióival együtt:
$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')}
most, hogy aquick nézd meg a HKLM elem félkövéren fent. Ez azt jelenti, hogy aa szkript által visszaküldött szoftver az LM – localmachine-ra telepített összes szoftver. Az alkalmazások azonban felhasználónként is telepíthetők. A jelenleg bejelentkezett felhasználó alkalmazásainak listájának visszaadásához változtassa meg a HKLM-et HKCU-ra(a CU jelentése “aktuális felhasználó”):
$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')}
a legutóbb telepített szoftverek listájának letöltése az Eseménynaplóból
ha csak a nemrég telepített szoftvert szeretné ellenőrizni, használhatja a következő cmdletto keresést az Eseménynaplóban.
Get-WinEvent -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
ez a módszer a telepített szoftver megtalálására a legmegbízhatóbb a legutóbb hozzáadott elemek számára, mert alapértelmezés szerint az eseménynaplók felülírják a legrégebbi rekordokat(körkörös naplózás).
További információ a PowerShell használatáról A Windows eseménynaplók és szűrési eredmények ellenőrzéséhez
a telepített szoftverek listájának megtekintése távolról
a fent említett módszerek mindegyike használható az ugyanazon hálózat más gépeire telepített szoftverek ellenőrzésére is. Ha létrehoz egy listát a hálózat összes számítógépnevéről, az alábbi módszerekkel egy Foreach hurokon belül több távoli számítógépről is visszaadhatja az eredményeket.A
$pcname minden szkriptben annak a távoli számítógépnek a nevét jelenti, amelyre a telepített szoftvereket és azok verzióit szeretné letölteni.
Get installed softwarelist with remote Get-WmiObject paranccsal
a következő parancsmag ismét a legkönnyebb a csomagban, de eltarthat egy ideig, hogy befejezze:
Get-WmiObject Win32_Product -ComputerName $pcname | select Name,Version
ahol a$pcname a lekérdezni kívánt számítógép Neve.
telepített szoftver Ellenőrzésetávoli rendszerleíró lekérdezéssel
a Távoli rendszerleíró lekérdezések kissé bonyolultabbak, ezért a Távoli Rendszerleíró szolgáltatás futtatásához szükséges. A minta lekérdezés a következő:
$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
ellenőrizze a legutóbb telepített szoftverlistát az Eseménynaplóból távolról
az auser eseménynaplójának távoli ellenőrzéséhez egyetlen attribútum (-ComputerName) hozzáadása szükséges a korábban használt parancsmaghoz:
Get-WinEvent -ComputerName $pcname -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
ellenőrizze, hogy a GPO által telepített szoftvert sikeresen alkalmazták-e
ha egy bizonyos szoftververziót GPO-n keresztül alkalmazott, könnyen ellenőrizheti, hogy ez a GPO sikeresen alkalmazta-e a felhasználót. Minden amire szükséged van a GPResult eszköz ésa célszámítógép és a felhasználó neve:
gpresult /s "PCNAME" /USER "Username" /h "Target location of theHTML report"
Ezután keresse meg a GPOname-t, és ellenőrizze, hogy szerepel-e az alkalmazott GPO-k vagy a megtagadott GPO-k között.Az alábbi csoportházirend-csoportházirend-minta az alkalmazott Csoportházirend-csoportba tartozik.