【发布时间】:2015-03-05 01:19:34
【问题描述】:
我正在使用 Powershell 从 MSI 文件中提取信息,我找到了这样做的示例,但它们都是特定于值的 E、G,如果您知道属性的名称,您可以找到属性的值,其中我想首先找到所有属性,它实际上是我需要的快捷方式表中的信息,下面是我想要实现的示例。
function Get-MsiDatabaseVersion {
param (
[IO.FileInfo] $FilePath
)
try {
$windowsInstaller = New-Object -com WindowsInstaller.Installer
$database = $windowsInstaller.GetType().InvokeMember(
"OpenDatabase", "InvokeMethod", $Null,
$windowsInstaller, @($FilePath.FullName, 0)
)
$q = "SELECT Directory_ FROM Shortcut"
$View = $database.GetType().InvokeMember(
"OpenView", "InvokeMethod", $Null, $database, ($q)
)
$View.GetType().InvokeMember("Execute", "InvokeMethod", $Null, $View, $Null)
$record = $View.GetType().InvokeMember(
"Fetch", "InvokeMethod", $Null, $View, $Null
)
$productVersion = $record.GetType().InvokeMember(
"StringData", "GetProperty", $Null, $record, 1
)
$View.GetType().InvokeMember("Close", "InvokeMethod", $Null, $View, $Null)
return $productVersion
} catch {
throw "Failed to get MSI file version the error was: {0}." -f $_
}
}
获取-MsiDatabaseVersion "C:\Random.msi"
so where $q = "SELECT Directory_ FROM Shortcut" 我需要知道快捷方式表中所有行的名称才能找到所有目录。目前它只返回第一个值。 如果您能提供帮助,我将不胜感激。 谢谢
【问题讨论】:
标签: powershell windows-installer