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

如何无需安装模块验证MSI并获取其签名、厂商及版本信息?

解决方案:无额外模块下处理MSI的签名与版本信息

1. 用Get-AppLockerFileInformation获取MSI版本与厂商信息

Get-AppLockerFileInformation返回的FileInformation对象中,Version属性是System.Version类型,直接调用.ToString()就能将分段版本转成标准字符串格式(如1.0.0.0),完全可行。同时,厂商信息可直接从Publisher属性获取。

示例代码:

$msiPath = "C:\path\to\your\target.msi"
$appLockerInfo = Get-AppLockerFileInformation -Path $msiPath | Select-Object -ExpandProperty FileInformation

# 转换分段版本为字符串
$msiVersion = $appLockerInfo.Version.ToString()
# 获取厂商信息
$msiPublisher = $appLockerInfo.Publisher

Write-Host "MSI版本: $msiVersion"
Write-Host "厂商信息: $msiPublisher"

如果需要自定义版本格式(比如忽略修订号,只保留主版本.次版本.构建号),可以手动拼接属性:

$customVersion = "$($appLockerInfo.Version.Major).$($appLockerInfo.Version.Minor).$($appLockerInfo.Version.Build)"

2. MSI签名验证仍使用Get-AuthenticodeSignature

无需额外模块,Get-AuthenticodeSignature原生支持MSI文件的签名验证,用法与EXE/DLL一致:

$signature = Get-AuthenticodeSignature -FilePath $msiPath
# 检查签名状态
if ($signature.Status -eq "Valid") {
    Write-Host "MSI签名有效,签名者: $($signature.SignerCertificate.Subject)"
} else {
    Write-Host "MSI签名无效或未签名,状态: $($signature.Status)"
}

补充说明

  • System.Version.ToString()会自动处理所有分段,即使某段为0也会保留(如2.0.0.0),完全满足版本字符串的需求。
  • Get-AppLockerFileInformation是Windows原生cmdlet,无需安装任何模块,适配流水线受限环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:09:55