Powershell WMIC 数据文件查询无效?

问题描述 投票:0回答:3

我搜索了又搜索,但无法弄清楚为什么会返回无效的查询错误:

wmic datafile where name='c:\\program files (x86)\\Mozilla Firefox\\Firefox.exe' get version

我也尝试过使用提升的PS,认为这可能是由于程序文件文件夹的权限所致。 我还尝试使用区分大小写的路径/文件名。 我尝试过双引号、单引号以及不带引号。 我还尝试过用单打替换双打。 我什至尝试过不同文件夹位置中的不同文件(例如 c: emp);似乎每次我使用 datafile where name 时,我都会收到无效的查询,即使我放弃获取版本...

世界上到底发生了什么?

powershell where-clause wmic
3个回答
11
投票

刚刚找到答案。 出于某种未知的原因,整个 name='path ilename.exe' 需要用引号引起来。

像这样:

wmic datafile where "name='c:\\program files (x86)\\Mozilla Firefox\\Firefox.exe'" get version

然后返回:

版本 31.0.0.5310

几乎正是我所需要的......现在我只需要找到一种方法来去掉返回值的“版本”部分。


5
投票

使用 PowerShell 的

Get-WmiObject
(别名
gwmi
)本机方法:

$f = gwmi cim_datafile -Filter {Name='c:\\program files (x86)\\Mozilla firefox\\firefox.exe'}
$f.Version

0
投票
$path = 'c:\windows\explorer.exe'
$wmipath = $path.Replace('\','\\') # escape backslash for wmi
(Get-CimInstance -Class Cim_DataFile -Filter "Name='$wmipath'").Version
© www.soinside.com 2019 - 2024. All rights reserved.