【问题标题】:talking to an OLE Automation (IDispatch) server from PowerShell从 PowerShell 与 OLE 自动化 (IDispatch) 服务器通信
【发布时间】:2012-03-24 03:15:34
【问题描述】:

我有兴趣从 Windows Powershell 与 OLE 自动化 (IDispatch) 服务器进行通信。任何人都可以指出一些简单的示例代码来说明这样做吗?我知道我可以使用 New-Object -com My.App.Interface 来创建对象,但是与它交谈是另一回事。在这种情况下,它是一个 OLE 自动化 (IDispatch) 接口,所以我不只是在返回的对象上调用方法,而是调用 IDispatch 的 Invoke 方法。

所以,无论如何,只是想知道是否有人可以向我指出一些我可以用作起点的示例。

【问题讨论】:

    标签: windows powershell ole-automation


    【解决方案1】:
    $a=new-object -com ....
    [System.__ComObject].invokemember(<Method>,[System.Reflection.BindingFlags]::invokeMethod,$null,$a,<args>)
    [System.__ComObject].invokemember(<Property>,[System.Reflection.BindingFlags]::GetProperty,$null,$a,<args>)
    

    【讨论】:

    • 这是一个很好的开始——我最初在谷歌搜索时发现了与此类似的代码。但不确定 将如何解决您在 OLE 自动化界面中遇到的各种类型。是否有 VARARG 的 powershell 包装器?这就是为什么我希望找到一些实际与 powershell 中的 OLE 自动化对象交互的示例,以了解他们如何处理 args(输入和输出)等。
    • 没有任何运气尝试使用 OLE 自动化服务器上​​显示的 InvokeMember。有人有正确使用的例子吗?
    • 从来没有想过这一点——接受参数的 COM 接口存在一个独特的问题——看起来这不是你可以直接从 PowerShell 调用的东西。
    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2020-05-13
    • 2016-04-15
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多