如何调用SMSFormatMessageCtl.FormatModuleMessage?

时间:2014-11-10 19:12:41

标签: perl powershell vbscript sccm

我正在尝试向服务器查询特定状态消息并构建它们的字符串格式。状态消息数据不包含已翻译的字符串。它们似乎存储在控制台的安装目录中的srvmsgs.dll中。

我看到了FormatModuleMessage SMSFormatMessageCtl方法的一些“文档”(证明它存在,对使用它没有帮助)。可悲的是,我找不到任何例子。 This guy提到他已经开始工作,但他没有提供细节。实际上,我甚至无法在计算机上找到引用的DLL(FormatMessageCtl.dll)。 StatView.EXE(客户端附带的状态消息查看器应用程序)存在,但在其上运行依赖性walker并未显示所需的.DLL的任何明显引用。

可以在VBScript中完成,或者最好是PowerShell吗?我实际上正在使用Perl,但这可能不太常见,几乎不可能找到有意义的代码示例。一个有效的VBScript或PowerShell示例将是一个很好的起点。

About Configuration Manager Component Status Messages”有一个例子,但我认为它是在C#或C ++中。

有关如何完成此任务的任何建议?

1 个答案:

答案 0 :(得分:1)

我就是那个人。已经2年了,但我认为我这样做的方式是首先我为dll注册了一个regsvr32.exe,然后我通过COM创建了一个SMSFormatMessageCtl对象

对于PowerShell来说

New-Object -COMObject SMSFormatMessageCTL

对于Perl,它甚至更长,但如果我没记错的话,那就是

的Win32 :: OLE-> DispatchEx( 'SMSFormatMessageCtl');

一旦有了对象,就可以调用FormatModuleMessage方法,并且不要忘记关于从WMI对象执行Severity和MessageID的按位OR的部分。