2016-07-21 13:35:17 +02:00
|
|
|
function Get-ComObject {
|
|
|
|
|
<#
|
|
|
|
|
.Synopsis
|
|
|
|
|
Returns a list of ComObjects
|
|
|
|
|
|
|
|
|
|
.DESCRIPTION
|
|
|
|
|
This function has two parameter sets, it can either return all ComObject or a sub-section by the filter parameter. This information is gathered from the HKLM:\Software\Classes container.
|
|
|
|
|
|
|
|
|
|
.NOTES
|
|
|
|
|
Name: Get-ComObject
|
|
|
|
|
Author: Jaap Brasser
|
|
|
|
|
Version: 1.0
|
|
|
|
|
DateUpdated: 2013-06-24
|
|
|
|
|
|
|
|
|
|
.LINK
|
2021-03-20 23:10:52 -02:00
|
|
|
https://www.jaapbrasser.com
|
2016-07-21 13:35:17 +02:00
|
|
|
|
|
|
|
|
.PARAMETER Filter
|
|
|
|
|
The string that will be used as a filter. Wildcard characters are allowed.
|
|
|
|
|
|
|
|
|
|
.PARAMETER ListAll
|
|
|
|
|
Switch parameter, if this parameter is used no filter is required and all ComObjects are returned
|
|
|
|
|
|
|
|
|
|
.EXAMPLE
|
|
|
|
|
Get-ComObject -Filter *Application
|
|
|
|
|
|
|
|
|
|
Description:
|
|
|
|
|
Returns all objects that match the filter
|
|
|
|
|
|
|
|
|
|
.EXAMPLE
|
|
|
|
|
Get-ComObject -Filter ????.Application
|
|
|
|
|
|
|
|
|
|
Description:
|
|
|
|
|
Returns all objects that match the filter
|
|
|
|
|
|
|
|
|
|
.EXAMPLE
|
|
|
|
|
Get-ComObject -ListAll
|
|
|
|
|
|
|
|
|
|
Description:
|
|
|
|
|
Returns all ComObjects
|
|
|
|
|
#>
|
|
|
|
|
param(
|
|
|
|
|
[Parameter(Mandatory=$true,
|
|
|
|
|
ParameterSetName='FilterByName')]
|
|
|
|
|
[string]$Filter,
|
|
|
|
|
[Parameter(Mandatory=$true,
|
|
|
|
|
ParameterSetName='ListAllComObjects')]
|
|
|
|
|
[switch]$ListAll
|
|
|
|
|
)
|
|
|
|
|
$ListofObjects = Get-ChildItem HKLM:\Software\Classes -ErrorAction SilentlyContinue |
|
|
|
|
|
Where-Object {
|
|
|
|
|
$_.PSChildName -match '^\w+\.\w+$' -and (Test-Path -Path "$($_.PSPath)\CLSID")
|
|
|
|
|
} | Select-Object -ExpandProperty PSChildName
|
|
|
|
|
|
|
|
|
|
if ($Filter) {
|
|
|
|
|
$ListofObjects | Where-Object {$_ -like $Filter}
|
|
|
|
|
} else {
|
|
|
|
|
$ListofObjects
|
|
|
|
|
}
|
|
|
|
|
}
|