This is a small PowerShell module project which aims at exposing Windows Installer API through a PowerShell interface, which is highly inspired by the layout and use of AppVClient module.
Either copy the files to a system-recognized location or make sure they are in your working directory, and then import the module
Import-Module MsiClientGet-MsiClientPackageFor available properties, see the next example.
Get-MsiClientPackage -PackageId '90160000-008c-0000-0000-0000000ff1ce'or
Get-MsiClientPackage '90160000-008c-0000-0000-0000000ff1ce'The output is a class with the following properties (sample values provided for a reference):
ProductCode   : 90160000-008c-0000-0000-0000000ff1ce
PackageCode   : 7afb57da-76ca-4406-8979-ad7fd1365320
ProductName   : Office 16 Click-to-Run Extensibility Component
VersionString : 16.0.9029.2167
Language      : 0
Publisher     : Microsoft Corporation
PackageName   : C2RInt.16.msi
Transforms    :
InstallSource : c:\program files (x86)\microsoft office\root\integration\
InstallDate   : 04.03.2018 00:00:00
Properties    : {[ProductCode, {90160000-008C-0000-0000-0000000FF1CE}], [PackageCode, {7AFB57DA-76CA-4406
                -8979-AD7FD1365320}], [PackageName, C2RInt.16.msi], [ProductName, Office 16 Click-to-Run
                Extensibility Component]...}
The property Properties is a dictionary which contains all values available at the time of reading, for example:
| Key | Value | 
|---|---|
| ProductCode | 90160000-008c-0000-0000-0000000ff1ce | 
| ProductID | |
| PackageName | C2RInt.16.msi | 
| ProductName | Office 16 Click-to-Run Extensibility Component | 
| VersionString | 16.0.9029.2167 | 
| Language | 0 | 
| Publisher | Microsoft Corporation | 
| State | |
| Transforms | |
| DisplayName | |
| PackageCode | {7AFB57DA-76CA-4406-8979-AD7FD1365320} | 
| AssignmentType | 1 | 
| InstanceType | 0 | 
| AuthorizedLUAApp | 0 | 
| Version | 268444485 | 
| ProductIcon | |
| InstalledProductName | Office 16 Click-to-Run Extensibility Component | 
| HelpLink | |
| HelpTelephone | |
| InstallLocation | |
| InstallSource | c:\program files (x86)\microsoft office\root\integration\ | 
| InstallDate | 20180304 | 
| LocalPackage | c:\WINDOWS\Installer\5ad3e8de.msi | 
| URLInfoAbout | |
| URLUpdateInfo | |
| VersionMinor | 0 | 
| VersionMajor | 16 | 
| RegCompany | |
| RegOwner | |
| Uninstallable | |
| PatchType | |
| LUAEnabled | |
| MoreInfoURL | |
| LastUsedSource | n;1;c:\program files (x86)\microsoft office\root\integration\ | 
| LastUsedType | n;1;c:\program files (x86)\microsoft office\root\integration\ | 
| MediaPackagePath | |
| DiskPrompt | 
Remove-MsiClientPackage -PackageId '90160000-008c-0000-0000-0000000ff1ce'This removes a package with a given GUID. The GUID/package can be passed via pipeline, so the following is possible:
Get-MsiClientPackage | where { $_.ProductName -contains 'Microsoft' } | Remove-MsiClientPackageThis removes all products from Microsoft :).
Get all products from Microsoft, and output the list to a HTML file with a custom CSS and a bunch of properties:
$Header = @"
  <style>
  TABLE {border: 1px solid gray collapse; }
  TH { border: 1px solid gray; padding: 6px 4px; background-color: #eaeaea; }
  TD { border: 1px solid gray; padding: 4px; }
</style>
"@
Get-MsiClientPackage | where { $_.Publisher -contains 'Microsoft Corporation' } | sort-object -Property ProductName | ConvertTo-Html -Property ProductCode,PackageName,ProductName,VersionString,Language,Publisher -Head $Header | Out-File c:\temp\test.html