使用 WMI 而不是 WMIC 命令来查找应用程序版本?

使用 WMI 而不是 WMIC 命令来查找应用程序版本?

我正在使用 wmic 查找内部应用程序的当前版本。我的命令如下:

wmic product where "name='Application Name'" get version

我从未使用过 wmi,但我读到有人说它比 wmic 更容易使用。我认为我的用法非常简单,但我该如何使用 wmi 来实现这一点,它会比 wmic 更快吗?(对我来说,wmic 运行非常慢)

答案1

电源外壳

Get-WMIObject -Query "SELECT Version FROM Win32_Product WHERE Name='SomeName'"

答案2

我读了坏事关于使用Win32_Product。我不知道它的细节,所以在这种情况下也许没问题,但我在阅读后最终选择了以下内容这个博客并询问这个问题

$regpath = 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
$version = Get-ItemProperty "$regpath\*" |
           Where-Object { $_.DisplayName -eq 'Application Name' } |
           Select-Object -Expand DisplayVersion

答案3

要使用 WMI 模拟您发布的 wmic 命令,请打开 PowerShell 提示符并输入:

Get-WmiObject -Class "Win32_Product" | Where-Object { $_.Name -eq "Application Name" } | select Name,Version

{ $_.Name -like "*application*" }如果需要, 您可以使用它来获得更好的匹配。

这也可以针对远程机器运行和/或通过添加-ComputerName-Credential参数使用不同的凭据。

答案4

这是一个用于获取一些信息的 powershell 脚本chrome,当然您可以在下面的脚本中更改它:

$OS_Architecture = $env:PROCESSOR_ARCHITECTURE
if($OS_Architecture -eq 'x86')
{$key="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"} 
    else {$key="HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"}

Get-ItemProperty $Key |
    Where-Object { $_.DisplayName -match 'chrome' } |
        Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
            Format-Table –AutoSize

相关内容