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

Joh*_*ing 38 com powershell

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

$excel = New-Object -com "Excel.Application"
$excel.visible = $true
Run Code Online (Sandbox Code Playgroud)

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

Jef*_*ood 59

我发现这个powershell单线程脚本应该列出所有COM对象.

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

如果有效,请告诉我们!

  • *我的两分钱:*`HKLM\Software\Classes`实际上对应于`HKCR` (3认同)
  • 还有我的两分钱:不是通过管道连接到ft PSChildName,而是通过管道选择select -ExpandProperty PSChildName。这会将结果返回为可以使用**-match **或** Select-String **进行过滤的数组。 (3认同)
  • 我可以确认它确实列出了所有已注册的 COM 对象。他们是否正确实现了 COM 接口是一个完全不同的问题。:) (2认同)

dan*_*gph 6

使用Microsoft的OleView.exe.我想它可能会附带Visual Studio.如果没有,您可以在Windows SDK中找到它.这是一个很大的下载; 您可以下载整个内容,也可以尝试使用setup.exe安装程序逐个下载它.

进入OleView后,查看"类型库".例如Excel出现在"Microsoft Exel"下.


Jas*_*her 6

另一个需要注意的选项是通过 WMI:

Get-WMIObject Win32_ClassicCOMClassSetting
Run Code Online (Sandbox Code Playgroud)

  • 由于它不是循环,因此它不可能是无限循环。因为有很多 COM 组件,所以需要很长时间才能运行。 (4认同)