如何使用PowerShell查找已安装的软件?

时间:2015-08-10 09:22:56

标签: powershell windows-installer

是否可以选择使用PowerShell查找已安装的软件?主要是以MSI为基础安装软件。我尝试使用以下代码,但我不确定它是否可靠并且适用于每个软件产品。例如,32位和64位?

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | `
Select DisplayName, DisplayVersion, Publisher, InstallDate | sort {[string]$PSItem}

是否有可靠的方法来查找每个已安装的软件?

2 个答案:

答案 0 :(得分:3)

您可以使用以下PowerShell命令找到有关已安装软件,更新和修补程序的所有信息:

try{
    $InstalledSoftware = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
    $InstalledSoftware += Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
} catch {
    Write-warning "Error while trying to retreive installed software from inventory: $($_.Exception.Message)"
}

如果我想找到已安装的MSI,您可以使用以下内容:

$InstalledMSIs = @()
foreach ($App in $InstalledSoftware){
    if($App.PSChildname -match "\A\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}\z"){
        $InstalledMSIs += New-Object PSObject -Property @{
            DisplayName = $App.DisplayName;
            DisplayVersion = $App.DisplayVersion;
            Publisher = $App.Publisher;
            InstallDate = $App.InstallDate;
            GUID = $App.PSChildName;    
        }
    }
}

此外,您可以使用以下命令检查Windows Server 2008或更高版本操作系统上的已安装功能:

Get-WindowsFeature -ErrorAction Stop | Where-Object {$_.Installed} | Sort-Object DisplayName

答案 1 :(得分:-1)

下面的命令将为您提供有关所有已安装软件的所有详细信息(我相信这更可靠)。

Get-WmiObject -Class Win32_Product