Want to know what version of a product is in an MSI? You need the ProductVersion property.
It’s a bit tricky to get at from Powershell 1.0, because there’s no runtime type info for the Installer class.
The following isn’t pretty, but it does the job.
# # Fetches ProductVersion from MSI file # param($msiPath) if($msiPath -eq $null) { "Expects full path to MSI file" return; } # Create Installer instance $installer = New-Object -comObject WindowsInstaller.Installer # Call Installer.OpenDatabase(name, openMode) $database = $installer.GetType().InvokeMember("OpenDatabase", [System.Reflection.BindingFlags]::InvokeMethod, $null, $installer, ($msiPath, 0)) # Call Database.OpenView(sql) $view = $database.GetType().InvokeMember("OpenView", [System.Reflection.BindingFlags]::InvokeMethod, $null, $database, "SELECT `Value` FROM `Property` WHERE `Property` = 'ProductVersion'") # Call View.Execute() $view.GetType().InvokeMember("Execute", [System.Reflection.BindingFlags]::InvokeMethod, $null, $view, $null) # Call View.Fetch() $record = $view.GetType().InvokeMember("Fetch", [System.Reflection.BindingFlags]::InvokeMethod, $null, $view, $null) # Get Record.StringData(field) $productVersion = $record.GetType().InvokeMember("StringData", [System.Reflection.BindingFlags]::GetProperty, $null, $record, 1) Write-Host $productVersion