Я пытаюсь связаться с приложением COM с помощью PowerShell. Когда я его создаю, я могу общаться с ним только через интерфейс IDispatch. Это само по себе интересно, потому что я могу рано связываться с ним в Visual Studio и общаться с ним «напрямую».
Когда я делаю:
$obj= New-Object -ComObject ComAssembly.Identifier # that's a made up name
$obj | gm
Я получаю только стандартные. Net вещи. Но я могу вызывать свойства, используя этот синтаксис:
$path = [System.__ComObject].InvokeMember('Path',[System.Reflection.BindingFlags]::GetProperty,$null,$obj,$null)
Это даст мне свойство Path
.
Что я хочу сделать, это вызвать метод, который принимает два параметра (в в моем случае это строка и параметр $path
). Я обнаружил, что общий способ вызова метода заключается в следующем:
$anotherthing = [System.__ComObject].InvokeMember('SomeMethod',[System.Reflection.BindingFlags]::InvokeMethod,$null,$cmc,<args>)
Мой вопрос: каков синтаксис для предоставления <args>
? Я пытался просто передать их в качестве аргументов, это не работает.