使用 PowerShell 匯出完整的已安裝軟體清單
在系統管理工作中,經常需要匯出電腦上已安裝的軟體清單。不過單純使用 Win32_Product 類別往往會漏掉許多軟體,因為現代軟體經常使用自己的安裝程式而非 Windows Installer。本文將介紹如何使用更全面的方法來取得完整的軟體清單。
為什麼需要掃描登錄檔
Windows 系統中,已安裝的軟體資訊主要儲存在以下登錄檔位置:
- HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
- HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall (32 位元軟體)
這些位置包含了所有透過各種方式安裝的軟體資訊,比 Win32_Product 類別更完整。
完整的 PowerShell 腳本
1 | # 設定輸出編碼為 UTF8,避免中文亂碼 |
腳本說明
讓我們逐步解釋這個腳本的功能:
設定編碼
- 使用 UTF8 編碼確保中文字能正確顯示
- 避免輸出的 CSV 檔案開啟時出現亂碼
定義登錄檔路徑
- 設定兩個需要掃描的登錄檔位置
- 包含 64 位元和 32 位元的軟體資訊
讀取軟體資訊
- 使用 Get-ItemProperty 讀取登錄檔內容
- 選擇重要欄位:名稱、版本、發布者、安裝日期
- 過濾掉沒有名稱的項目(通常是更新檔或系統元件)
資料處理
- 合併兩個登錄檔路徑的資料
- 依照軟體名稱排序
- 移除重複的項目
匯出資料
- 將欄位名稱改為中文,方便閱讀
- 匯出成 CSV 格式,存放在桌面
執行結果
執行後會在桌面產生 installed_software_complete.csv 檔案,打開後可以看到類似以下的內容:
| 名稱 | 版本 | 發布者 | 安裝日期 |
|---|---|---|---|
| Adobe Creative Cloud | 5.11.0.522 | Adobe Inc. | 20231201 |
| Google Chrome | 120.0.6099.130 | Google LLC | 20231215 |
| Microsoft Office | 16.0.17201.20290 | Microsoft Corporation | 20230601 |
| PyCharm 2023.3 | 233.11799.298 | JetBrains s.r.o. | 20231220 |
| Visual Studio Code | 1.85.1 | Microsoft Corporation | 20231218 |
注意事項
- 此腳本需要以系統管理員權限執行
- 某些軟體可能沒有完整的安裝資訊
- 安裝日期格式可能因軟體而異
進階使用
如果需要更多資訊,可以修改 Select-Object 的欄位,例如:
1 | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, |
這樣就能同時匯出:
- 安裝路徑 (InstallLocation)
- 解除安裝指令 (UninstallString)
- 預估大小 (EstimatedSize)
參考資料
本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 kyosora 筆記!
評論
