Szoftvertelepítésekkel végzett munka
A Windows Installerrel telepített alkalmazások megtalálhatók a WMI lekérdezésein keresztül, de nem minden alkalmazás használja a Windows Installert. A más eszközökkel telepített alkalmazások keresésének konkrét technikái a telepítő szoftvertől függenek.
Például a fájlok számítógépen lévő mappába másolásával telepített alkalmazások általában nem kezelhetők az itt tárgyalt technikákkal. Ezeket az alkalmazásokat fájlként és mappaként kezelheti a Fájlok és mappák kezelése című részben tárgyalt technikák segítségével.
Telepítőcsomaggal telepített szoftverek esetén a Windows Installer a Win32Reg_AddRemovePrograms vagy a Win32_Product osztályok használatával érhető el. Azonban mindkettőnek vannak problémái. A Win32Reg_AddRemovePrograms csak a System Center Configuration Manager (SCCM) használata esetén érhető el. És aWin32_Productosztály lassú lehet, és mellékhatásai is lehetnek.
Vigyázat
A Win32_Product osztály nincs lekérdezésre optimalizálva. A helyettesítő karakteres szűrőket használó lekérdezések arra késztetik a WMI-t, hogy az MSI-szolgáltató segítségével felsorolja az összes telepített terméket, majd a teljes listát egymás után elemzi a szűrő kezeléséhez. Ez elindítja a telepített csomagok konzisztenciájának ellenőrzését, valamint a telepítés ellenőrzését és javítását. Az érvényesítés lassú folyamat, és hibákat eredményezhet az eseménynaplókban. További információért keresse fel a KB 974524-es cikket.
Ez a cikk egy alternatív módszert kínál a telepített szoftverek megkeresésére.
Az Uninstall rendszerleíró kulcs lekérdezése a telepített szoftver megkereséséhez
Mivel a legtöbb szabványos alkalmazás regisztrál egy eltávolítót a Windows rendszerben, ezekkel helyileg dolgozhatunk, ha megtaláljuk őket a Windows rendszerleíró adatbázisában. Nincs garantált módja annak, hogy minden alkalmazást megtaláljon a rendszeren. Mindazonáltal minden olyan programot megtalálhat, amelynek listája megjelenik a Programok hozzáadása vagy eltávolítása részben a következő beállításkulcsban:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall.
A telepített alkalmazások számát a rendszerleíró kulcsok számának megszámlálásával találhatjuk meg:
$UninstallPath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall'
(Get-ChildItem -Path $UninstallPath).Count
459
Az alkalmazások listáján tovább kereshetünk különféle technikák segítségével. Az Eltávolítás alatti beállításkulcsokban lévő beállításjegyzék értékeinek megjelenítéséhez használja a rendszerleíró kulcsok GetValue() metódusát. A metódus értéke a rendszerleíró bejegyzés neve. Például az alkalmazások megjelenített nevének megkereséséhez az Uninstall kulcsban használja a következő parancsot:
Get-ChildItem -Path $UninstallPath |
ForEach-Object -Process { $_.GetValue('DisplayName') } |
Sort-Object
Jegyzet
Nincs garancia arra, hogy a DisplayName értékek egyediek.
A következő példa a Win32Reg_AddRemovePrograms osztályhoz hasonló kimenetet állít elő:
Get-ChildItem $UninstallPath |
ForEach-Object {
$ProdID = ($_.Name -split '\\')[-1]
Get-ItemProperty -Path "$UninstallPath\$ProdID" -ea SilentlyContinue |
Select-Object -Property DisplayName, InstallDate, @{n='ProdID'; e={$ProdID}}, Publisher, DisplayVersion
} | Select-Object -First 3
A rövidség kedvéért ez a példa a Select-Object használatával korlátozza a visszaadott elemek számát háromra.
DisplayName : 7-Zip 22.01 (x64)
InstallDate :
ProdID : 7-Zip
Publisher : Igor Pavlov
DisplayVersion : 22.01
DisplayName : AutoHotkey 1.1.33.10
InstallDate :
ProdID : AutoHotkey
Publisher : Lexikos
DisplayVersion : 1.1.33.10
DisplayName : Beyond Compare 4.4.6
InstallDate : 20230310
ProdID : BeyondCompare4_is1
Publisher : Scooter Software
DisplayVersion : 4.4.6.27483