【问题标题】:Get current version number of specified program获取指定程序的当前版本号
【发布时间】:2018-06-04 20:48:56
【问题描述】:

我是在朋友的推荐下开始的

Get-WmiObject win32_product | ft name, version

但后来我找到了this,这让我停下来。 一个小小的研究让我明白了这一点

wmic product where "Name='Revit 2018'" get name,version

就收集到的数据而言,这很有效。是的,我正在这个例子中寻找一个不同的程序。无论如何,一旦我使用 WMIC 获得了良好的信息,我就会尝试将数据放入一个变量中,这样我就可以获得版本号,但数据格式是我以前从未见过的。我希望有一个简单的解决方案,比如

$object = wmic product where "Name='Revit 2018'" get name,version
$object.version

但只有结果是一个包含 6 个项目的数组,而且似乎只有一个是实际的数据行,而且是一行,而不是两个属性。而且,我真的想知道一个旧的命令行实用程序是否是这里的正确答案。如果这确实是最好的方法,那么是否有将原始数据转换为更多内容的技巧,PowerShelly?如果这不是获取此信息的最佳方式,那是什么?那个可怕的链接是真实的,还是 Get-WmiObject win32_product 实际上安全?如果是这样,有没有办法过滤特定名称以加快速度?事实上,Get-WmiObject 并没有像我预期的那样工作,因为

$object = Get-WmiObject win32_product | ft name, version
foreach ($item in $object) {
    Write-Host "$($item.version)"
}

根本没有按预期工作。

编辑:这似乎按预期工作,这是进步。

$version = (Get-WmiObject win32_product -filter:"Name = 'Revit 2018'" | Select-Object -property:*).version
Write-Host "$version!"

我想问题是真的,这是一种安全且一致的方法,还是有更好的方法?

【问题讨论】:

  • 我多次使用win32_product,结果总是......充其量是不一致的。它有时有效,有时无效。没有找到更好的方法
  • wmic product 最终解析为查询win32_product,所以不会有什么不同。另一种方法是to query the registry

标签: powershell wmi wmi-query


【解决方案1】:

为什么不使用注册表?

Set-Location HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall
$app = Get-ChildItem | Where-Object { $_.GetValue("DisplayName") -match 'YourSoftware' }

$app.GetValue("DisplayVersion")

或者

Set-Location HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall
$apps = Get-ChildItem
foreach ($app in $apps) {
  $app.GetValue("DisplayName","DisplayVersion")
}

注意:您还需要检查 SysWow64 注册表位置

HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ 

注意:并非所有项目都有显示版本,在这种情况下,您始终可以选择在安装目录中查找可执行文件本身,它应该有一个版本。

【讨论】:

  • 我想我不相信供应商(在这种情况下是 Autodesk)提供了准确的信息。再说一次,WMI 很可能只是收集相同的(可疑的)信息。是时候测试一堆东西,看看我是否能得到一致的结果。
  • @Gordon 获取版本信息一直都是这样。如果您只使用一种方法来寻找一致性;无论是 WMI 还是注册表,您都会感到非常失望,很抱歉。我认为一致的方法是从可执行文件本身获取版本信息。 (Get-Item .\prog.exe).psextended.VersionInfo.ProductVersion
猜你喜欢
  • 2017-03-17
  • 2015-01-26
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 2010-10-12
  • 2014-01-27
相关资源
最近更新 更多