You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell获取MECM检测规则中的MSI Version属性值

如何获取MSI文件的正确版本(模拟MECM操作)

MECM读取的是MSI文件内部数据库的ProductVersion属性,而Get-Item $msiPath | Select-Object VersionInfo获取的是文件本身的版本字段——很多MSI文件的这个字段未填充,所以会显示0.0.0.0。要模拟MECM的操作,直接读取MSI数据库中的对应属性即可,以下是两种可行方法:

方法一:使用Windows Installer COM对象(PowerShell)

这是最直接的方式,无需额外工具:

$msiPath = "C:\路径\到\你的\安装包.msi"

# 初始化Windows Installer COM对象
$installer = New-Object -ComObject WindowsInstaller.Installer
# 打开MSI数据库(0表示只读模式)
$database = $installer.OpenDatabase($msiPath, 0)
# 查询ProductVersion属性
$query = "SELECT Value FROM Property WHERE Property='ProductVersion'"
$view = $database.OpenView($query)
$view.Execute()

# 获取查询结果
$record = $view.Fetch()
if ($record) {
    Write-Host "MSI产品版本: $($record.StringData(1))"
}

# 清理COM对象,避免内存泄漏
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($view) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($database) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($installer) | Out-Null

方法二:使用msiexec命令行提取(备选)

如果无法使用PowerShell,可通过生成安装日志提取版本信息:

msiexec /i "C:\路径\到\你的\安装包.msi" /qn /l*v "msi_version.log"

执行完成后,打开msi_version.log,查找包含ProductVersion:的行,即可找到对应版本号。

内容的提问来源于stack exchange,提问作者Bbb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 06:12:40