在哪里可以找到可以在Powershell中创建的所有COM对象?

在哪里可以找到可以在Powershell中创建的所有COM对象?,com,powershell,Com,Powershell,在Powershell中,我可以创建COM对象,例如用于控制Microsoft Office应用程序: $excel = New-Object -com "Excel.Application" $excel.visible = $true 如何列出可以在Powershell中创建的所有可用COM对象?我发现了这个Powershell一行脚本,它应该列出所有COM对象 gci HKLM:\Software\Classes -ea 0| ? {$_.PSChildName -match '^\w+

在Powershell中,我可以创建COM对象,例如用于控制Microsoft Office应用程序:

$excel = New-Object -com "Excel.Application"
$excel.visible = $true

如何列出可以在Powershell中创建的所有可用COM对象?

我发现了这个Powershell一行脚本,它应该列出所有COM对象

gci HKLM:\Software\Classes -ea 0| ? {$_.PSChildName -match '^\w+\.\w+$' -and
(gp "$($_.PSPath)\CLSID" -ea 0)} | ft PSChildName

让我们知道它是否有效

使用Microsoft提供的OleView.exe。我认为它可能与VisualStudio一起提供。如果没有,您可以在中找到它。下载量很大;您可以下载整个内容,也可以尝试使用setup.exe安装程序逐段下载


进入OleView后,请查看“类型库”下的内容。例如,Excel显示在“Microsoft Exel”下。另一个应注意的选项是通过WMI:

Get-WMIObject Win32_ClassicCOMClassSetting

我可以确认它确实列出了所有注册的COM对象。他们是否正确实现COM接口是一个完全不同的问题。:)我的两分钱:
HKLM\Software\Classes
实际上对应于
HKCR
,我的两分钱:不是管道到
ft-PSChildName
,而是管道到
select-ExpandProperty-PSChildName
。它以数组的形式返回结果,可以使用-match或Select-String进行筛选。上面的这个脚本对我不起作用,相反,这个脚本起作用:如果您执行
格式化文本
,您将不会得到
字符串
s,但是一些与格式化相关的类运行它会产生无限循环,因为它不是循环,它不可能是一个无限循环。这将需要很长时间才能运行,因为有许多COM组件。其中没有列出我正在寻找的ActiveX控件。确实如此,ActiveX控件并不总是有progid,或者更准确地说,是编程标识符(这是上面的脚本在HKCR中发现的。但它们总是有CLSID。如果您只是试图确定是否安装了ActiveX控件以便可以卸载它,请在HKCR/CLSID中搜索它的CLSID。