Events 在PowerShell中,如何实现COM对象的事件处理程序?

Events 在PowerShell中,如何实现COM对象的事件处理程序?,events,object,com,powershell,handler,Events,Object,Com,Powershell,Handler,我在PowerShell中创建了一个COM对象: $CivicFactory=新对象-comObject LocationDisp.CivicAddressReportFactory 我需要实现“NewCivicAddressReport”的事件处理程序。我试过这个: Register-ObjectEvent $CivicFactory -EventName "NewCivicAddressReport" -Action ({ echo "haha" }) 但它给了我“Register Obj

我在PowerShell中创建了一个COM对象: $CivicFactory=新对象-comObject LocationDisp.CivicAddressReportFactory

我需要实现“NewCivicAddressReport”的事件处理程序。我试过这个:

Register-ObjectEvent $CivicFactory -EventName "NewCivicAddressReport" -Action ({ echo "haha" })
但它给了我“Register ObjectEvent:无法注册事件。名为“NewCivicAddressReport”的事件不存在。”

然后我尝试了
$CivicFactory.add_newcivicAddresserReport({“haha”})

它也不起作用:方法调用失败,因为
[System.\uu-ComObject.{bf773b93-c64f-4bee-beb2-67c0b8df66e0}]不包含名为“add\u newcivicAddresserReport”的方法。

有人能告诉我如何在PowerShell中实现此事件处理程序吗?提前谢谢。 在VBScript中,它与

Function CivicFactory_NewCivicAddressReport(report)
    Blablabla...
End Function

但在PowerShell中,我无法使其工作。

您可能感兴趣,它处理.NET、COM和WMI对象事件处理。

我尝试获取成员:
$CivicFactory |获取成员-成员类型事件
但它什么也没回来

如果我运行Get Member而不指定成员类型,它将返回其方法和属性。方法和属性都很好,所以我相信对象是可以的

因此,PowerShell系统似乎无法识别对象的事件


但是该文档声明应该实现事件处理程序NewCivicAddressReport,我已经在VBScript和JScript中成功地实现了这一点。

使用Visual Studio生成的互操作程序集

每当一个COM(库)引用被添加到一个C#项目中时,IDE就会构建一个包装器,使所有实体(包括事件和枚举)都可供.NET世界使用

包装器通常打包在一个名为以下内容的文件中:

Interop.<COM-library-name>.dll
Interop..dll

请注意,类名可能不同。使用IL反汇编程序(ildasam.exe)来识别您必须实例化的类。

我会尝试
$CivicFactory |获取成员类型事件
来获取您的对象可以订阅的所有事件。