枚举给定 ProgID 的 COM 对象公开的方法和属性

Enumerate the methods and properties exposed by a COM object given the ProgID

以下 this question, I want to list all the methods and properties exposed by a Component Object Model (COM) object, given its ProgID. From here 我可以列出注册表中可用的所有 COM 对象 ProgID:

dir  REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | foreach {$_.GetValue(“”)}

虽然它在一些导出的字符串末尾添加了一些数字(例如,.1)。

并且 here 提出了一个小脚本来完成给定 CLSID 的工作。伪代码:

[activator]::CreateInstance([type]::GetTypeFromCLSID($CLSID)) | Get-Member

请注意,我不知道 PowerShell,上面的代码很可能是错误的。

如果你能帮助我知道如何使用上面的代码片段或任何其他方式获取 COM 对象的方法和属性列表并知道它的 ProgID(例如,WScript.Shell),我将不胜感激.

P.S. 它不一定是 PowerShell 解决方案。 cmd/batch、JScript 和 VBScript 解决方案也很受欢迎。

Public 如果从 COM 对象实例化一个对象,方法和属性将被暴露

New-Object -ComObject WScript.Shell | Get-Member

将return

Name                     MemberType            Definition                                   
----                     ----------            ----------                                   
AppActivate              Method                bool AppActivate (Variant, Variant)          
CreateShortcut           Method                IDispatch CreateShortcut (string)            
Exec                     Method                IWshExec Exec (string)                       
ExpandEnvironmentStrings Method                string ExpandEnvironmentStrings (string)     
LogEvent                 Method                bool LogEvent (Variant, string, string)      
Popup                    Method                int Popup (string, Variant, Variant, Variant)
RegDelete                Method                void RegDelete (string)                      
RegRead                  Method                Variant RegRead (string)                     
RegWrite                 Method                void RegWrite (string, Variant, Variant)     
Run                      Method                int Run (string, Variant, Variant)           
SendKeys                 Method                void SendKeys (string, Variant)              
Environment              ParameterizedProperty IWshEnvironment Environment (Variant) {get}  
CurrentDirectory         Property              string CurrentDirectory () {get} {set}       
SpecialFolders           Property              IWshCollection SpecialFolders () {get}

@Simon Mourier 策略也可以正常工作