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

PowerShell 5.1下如何提取MSI文件元数据?

提取MSI文件元数据(含Comments属性)的PowerShell 5.1解决方案

Get-ItemProperty只能读取文件系统层面的常规属性,无法获取MSI专属的元数据(比如Comments)。要读取这类属性,得借助Windows Installer的COM对象直接操作MSI数据库。

以下是可行的实现代码:

$filePath = "C:\Users\user1\source\repos\PRACTICE\WpfApp1\SetupProject1\bin\Debug\SetupProject1.msi"

# 初始化Windows Installer COM对象
$installer = New-Object -ComObject WindowsInstaller.Installer

try {
    # 以只读模式打开MSI文件
    $database = $installer.OpenDatabase($filePath, 0)
    
    # 查询Properties表中的Comments属性
    $query = "SELECT Value FROM Property WHERE Property='Comments'"
    $view = $database.OpenView($query)
    $view.Execute()
    
    # 获取查询结果
    $record = $view.Fetch()
    if ($record) {
        Write-Host "MSI注释: $($record.StringData(1))"
    } else {
        Write-Host "该MSI文件未配置Comments属性"
    }
}
catch {
    Write-Error "读取MSI元数据出错: $_"
}
finally {
    # 释放资源,避免COM对象泄漏
    if ($view) { $view.Close() }
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($installer) | Out-Null
}

扩展说明

如果需要读取其他MSI属性(如ProductName、ProductVersion、Manufacturer),只需修改查询语句中的Property值即可,例如:

SELECT Value FROM Property WHERE Property='ProductName'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:54:51