如何解决有没有办法找到每个 msi 文件的产品 ID产品代码?
会员。
我一直在努力使用 PowerShell 查找产品 ID。我在下面找到了但是,我无法理解每一行的含义。
有没有更简单的方法可以使用 powerhsell 和 cmd 来查找产品 ID,或者您能解释一下每一行吗?
我所指的 ps1 是 Get-GuidFromMsiFile.ps1。为了从 MDM 服务器为客户端传送 Msi 文件,它使用我们用于每个 msi 文件的每个产品 ID(产品代码)。
据我调查,没有简单的方法,可以在网站下方找到。但我无法理解每一行的含义。
如果有人能解释为什么需要每一行(如果你能告诉我找到每个 msi 文件的产品 ID(产品代码)的任何替代方法,那就太好了。
https://adamrushuk.github.io/get-product-id-guid-directly-from-msi-file/
—— 我在这里问的原因的背景是…… ---- 我正在考虑使用下面的 CSP,它的 CSP 需要产品 ID 才能交付 msi 文件 但是我不知道如何找到 msi 的产品 ID https://docs.microsoft.com/en-us/windows/client-management/mdm/enterprisedesktopappmanagement-csp
解决方法
我下载了 Powershell 7 MSI,然后在桌面上创建了这个 script.ps1。
param(
[parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()] [System.IO.FileInfo]$Path,[parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()] [ValidateSet("ProductCode","ProductVersion","ProductName","Manufacturer","ProductLanguage","FullVersion")] [string]$Property )
Process {
try {
$WindowsInstaller = New-Object -ComObject WindowsInstaller.Installer
$MSIDatabase = $WindowsInstaller.GetType().InvokeMember("OpenDatabase","InvokeMethod",$null,$WindowsInstaller,@($Path.FullName,0))
$Query = "SELECT Value FROM Property WHERE Property = '$($Property)'"
$View = $MSIDatabase.GetType().InvokeMember("OpenView",$MSIDatabase,($Query))
$View.GetType().InvokeMember("Execute",$View,$null)
$Record = $View.GetType().InvokeMember("Fetch",$null)
$Value = $Record.GetType().InvokeMember("StringData","GetProperty",$Record,1)
$MSIDatabase.GetType().InvokeMember("Commit",$null);
$View.GetType().InvokeMember("Close",$null);
$MSIDatabase = $null;
$View = $null;
return $Value;
}
catch { Write-Warning -Message $_.Exception.Message ; break }
} End {
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($WindowsInstaller) | Out-Null [System.GC]::Collect
}
我针对 MSI 运行了脚本并获得了预期的结果。
PS C:\Users\azureuser> .\Desktop\script.ps1 -Path "C:\Users\azureuser\Downloads\PowerShell-7.1.3-win-x64.msi" -Property ProductCode
{A6307460-5CB8-47E2-91FE-A35552EA2C39}
PS C:\Users\azureuser> .\Desktop\script.ps1 -Path "C:\Users\azureuser\Downloads\PowerShell-7.1.3-win-x64.msi" -Property ProductName
PowerShell 7-x64
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。