
$Results | ConvertTo-Html | Out-File MSIProperties-$StartDateTime. $Results += New-Object PSObject -Property = $MSIFullName.Name $ProductCode = Get-MSIProperty -Path $MSIFullName.FullName -Property "ProductCode" $ProductLanguage = Get-MSIProperty -Path $MSIFullName.FullName -Property "ProductLanguage" $ProductVersion = Get-MSIProperty -Path $MSIFullName.FullName -Property "ProductVersion" $ProductName = Get-MSIProperty -Path $MSIFullName.FullName -Property "ProductName" $Manufacturer = Get-MSIProperty -Path $MSIFullName.FullName -Property "Manufacturer" $AllMSIFiles = Get-ChildItem $Folder -Recurse -Filter *.msi $Results += New-Object PSObject -Property = "$File" $ProductCode = Get-MSIProperty -Path $File -Property "ProductCode" Wildcard characters ( or ) are supported.
$ProductVersion = Get-MSIProperty -Path $File -Property "ProductVersion" $ProductName = Get-MSIProperty -Path $File -Property "ProductName"

$Manufacturer = Get-MSIProperty -Path $File -Property "Manufacturer" $Value = $Record.GetType().InvokeMember("StringData","GetProperty",$null,$Record,1) $Record = $View.GetType().InvokeMember("Fetch","InvokeMethod",$null,$View,$null) $View.GetType().InvokeMember("Execute", "InvokeMethod", $null, $View, $null) $View = $MSIDatabase.GetType().InvokeMember("OpenView","InvokeMethod",$null,$MSIDatabase,($Query)) $MSIDatabase = "SELECT Value FROM Property WHERE Property = '$Property'" $comObjWI = New-Object -ComObject WindowsInstaller.Installer $WindowsInstaller = New-Object -ComObject WindowsInstaller.Installer $TZbias = (Get-WmiObject -Query "Select Bias from Win32_TimeZone").biasįunction Get-MSIProperty ($Path,$Property) $StartDateTime = Get-Date -Format "HHmmss" $StartDate = Get-Date -Format "MM-dd-yyyy" $StartTime = Get-Date -Format "HH:mm:ss.fff"

#Emcopy parameters code#
I would like to thank Nickolaj Andersen ( ) for some of the code snippets The function in this script can also be used in bigger scripts such as scripts to automate application installation (Something I will post about shortly)
#Emcopy parameters install#
So using PowerShell we can get a list of MSI properties without having to install the MSI or use additional steps in SCCM. My preferred method has always been to use the Detection Method tab to extract the product code that I can then copy/paste into the other tabs but when you are creating large amounts of applications this can be a very slow process.

There are a few ways to make this process easier. Anyone who uses SCCM for application deployments knows the frustration of having to find MSI product codes.
