Давным-давно я создал класс COM, который делает некоторые вещи, а также обеспечивает регистрацию обратного вызова:
HRESULT RegisterCallback([in] IUnknown* callbackFunction);
callbackFunction
может иметь тип IDispatch
или ICallbackHandler
interface IActionCallbackHandler : IUnknown {
[id(1)] HRESULT ActionCallback(IActionCallbackData* data);
};
IDispatch
использовался для регистрации подпрограмм VBScript в качестве метода обратного вызова, например:
Sub ProgressCallback (data)
WScript.Echo data.Message
End sub
Set myObj= CreateObject("MyClass.MyClass")
myObj.RegisterCallback GetRef("ProgressCallback")
myObj.DoSomeActions //this method will call ProgressCallback()
Однако инженеры пытаются избавиться от VBScript и заменить все на powershell.Все работает в powershell, кроме обратного вызова.Так что нет никакого прогресса, и они ничего не могут войти.
Как я могу добиться этого обратного вызова в powershell?Было бы идеально ссылаться на функцию powershell так же, как в VBScript.Таким образом, они могли бы по-прежнему использовать свои объекты регистрации и т. Д.