有没有办法找到每个msi文件的产品ID(产品代码)



成员。

我一直在使用PowerShell查找Produt 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的产品IDhttps://learn.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", "InvokeMethod", $null, $MSIDatabase, ($Query))
$View.GetType().InvokeMember("Execute", "InvokeMethod", $null, $View, $null)
$Record = $View.GetType().InvokeMember("Fetch", "InvokeMethod", $null, $View, $null)
$Value = $Record.GetType().InvokeMember("StringData", "GetProperty", $null, $Record, 1)
$MSIDatabase.GetType().InvokeMember("Commit", "InvokeMethod", $null, $MSIDatabase, $null);
$View.GetType().InvokeMember("Close", "InvokeMethod", $null, $View, $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:Usersazureuser> .Desktopscript.ps1 -Path "C:UsersazureuserDownloadsPowerShell-7.1.3-win-x64.msi" -Property ProductCode
{A6307460-5CB8-47E2-91FE-A35552EA2C39}
PS C:Usersazureuser> .Desktopscript.ps1 -Path "C:UsersazureuserDownloadsPowerShell-7.1.3-win-x64.msi" -Property ProductName
PowerShell 7-x64

最新更新