Bekerja dengan instalasi perangkat lunak

Aplikasi yang diinstal dengan Penginstal Windows dapat ditemukan melalui kueri WMI, tetapi tidak semua aplikasi menggunakan Penginstal Windows. Teknik khusus untuk menemukan aplikasi yang diinstal dengan alat lain tergantung pada perangkat lunak penginstal.

Misalnya, aplikasi yang diinstal dengan menyalin file ke folder di komputer biasanya tidak dapat dikelola menggunakan teknik yang dibahas di sini. Anda dapat mengelola aplikasi ini sebagai file dan folder menggunakan teknik yang dibahas dalam Bekerja Dengan File dan Folder.

Untuk perangkat lunak yang diinstal menggunakan paket alat penginstal, Penginstal Windows dapat ditemukan menggunakan Win32Reg_AddRemovePrograms atau kelas Win32_Product . Namun, kedua hal ini memiliki masalah. Win32Reg_AddRemovePrograms hanya tersedia jika Anda menggunakan System Center Configuration Manager (SCCM). Dan kelas Win32_Product bisa lambat dan memiliki efek samping.

Perhatian

Kelas Win32_Product tidak dioptimalkan kueri. Kueri yang menggunakan filter kartubebas menyebabkan WMI menggunakan penyedia MSI untuk menghitung semua produk yang diinstal kemudian mengurai daftar lengkap secara berurutan untuk menangani filter. Ini juga memulai pemeriksaan konsistensi paket yang diinstal, memverifikasi, dan memperbaiki penginstalan. Validasi adalah proses yang lambat dan dapat mengakibatkan kesalahan dalam log peristiwa. Untuk informasi selengkapnya, cari artikel KB 974524.

Artikel ini menyediakan metode alternatif untuk menemukan perangkat lunak yang terinstal.

Mengkueri kunci hapus instalan registri untuk menemukan perangkat lunak yang terinstal

Karena sebagian besar aplikasi standar mendaftarkan uninstaller dengan Windows, kita dapat bekerja dengan mereka secara lokal dengan menemukannya di registri Windows. Tidak ada cara terjamin untuk menemukan setiap aplikasi pada sistem. Namun, dimungkinkan untuk menemukan semua program dengan daftar yang ditampilkan di Tambahkan atau Hapus Program di kunci registri berikut:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall.

Kita dapat menemukan jumlah aplikasi yang diinstal dengan menghitung jumlah kunci registri:

$UninstallPath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall'
(Get-ChildItem -Path $UninstallPath).Count
459

Kita dapat mencari daftar aplikasi ini lebih lanjut menggunakan berbagai teknik. Untuk menampilkan nilai nilai registri di kunci registri di bawah Uninstall, gunakan GetValue() metode kunci registri. Nilai metode adalah nama entri registri. Misalnya, untuk menemukan nama tampilan aplikasi di Uninstall kunci, gunakan perintah berikut:

Get-ChildItem -Path $UninstallPath |
    ForEach-Object -Process { $_.GetValue('DisplayName') } |
    Sort-Object

Catatan

Tidak ada jaminan bahwa nilai DisplayName unik.

Contoh berikut menghasilkan output yang mirip dengan kelas Win32Reg_AddRemovePrograms :

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

Demi brevity, contoh ini menggunakan Select-Object untuk membatasi jumlah item yang dikembalikan menjadi tiga.

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