Public/Get-ComObject.ps1
function Get-ComObject { param( [Parameter(Mandatory,ParameterSetName='FilterByName')] [string]$Filter, [Parameter(Mandatory,ParameterSetName='ListAllComObjects')] [switch]$ListAll ) $ListofObjects = Get-ChildItem -Path 'HKLM:\Software\Classes' -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match '^\w+\.\w+$' -and (Test-Path -Path ('{0}\CLSID' -f $_.PSPath)) } | Select-Object -ExpandProperty PSChildName if ($Filter) { $ListofObjects | Where-Object {$_ -like $Filter} } else { $ListofObjects } } |