【发布时间】: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