BizTalk WMI远程包装器

时间:2009-11-03 23:09:10

标签: wmi biztalk

我正在使用.Net Framework SDK中的MgmtClassGen.exe为主机,主机实例等BizTalk工件生成一些WMI包装类。

我正在使用HostSetting.GetInstances()来获取本地主机(本地BizTalk Server)。这很好用。我现在正在寻找一种方法来为另一台具有不同BizTalk管理数据库名称的BizTalk机器上的主机执行相同的操作。我无法使用包装类找到一种方法。我确实想要包装类。知道如何连接到服务器'ServerX'上名为'MyManagementDB'的BizTalk Management数据库?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您可以通过在WMI范围声明中指定它来选择要连接的其他服务器。

在您的代码中,您将拥有以下内容:

ManagementClass objHostSettingClass = new ManagementClass("root\\MicrosoftBizTalkServer", "MSBTS_HostSetting", null);

构造函数调用中的第一个参数是作用域。这可以包括服务器名称,如下所示:

ManagementClass objHostSettingClass = new ManagementClass("\\\\ServerX\\root\\MicrosoftBizTalkServer", "MSBTS_HostSetting", null);

我认为您不需要知道消息框名称 - WMI MicrosoftBizTalkServer提供程序应该允许您直接访问服务器上的主机实例。

修改

正如Maxime在下面的评论中指出的那样,有一种方法可以设置WMI范围,该范围与MgmtClassGen.exe工具生成的代码更加集成。

这允许您设置生成的类的StaticScope属性。这仍然需要构建一个定义范围的字符串,但只提供一个位置来定义它。 Maxime有一个很好的帖子,定义了一个构建StaticScope字符串的帮助器类。

答案 1 :(得分:0)

我知道这可能被认为是偏离主题,因为你有点特别询问WMI,但是还有一个.NET库提供对所有BizTalk工件的访问,称为Microsoft.BizTalk.ExplorerOM.dll。我用它来打开/关闭一个小型C#应用程序中的接收位置。以下是我之前的Stack Overflow问题的链接,其中包含更多信息:

Is there a way to automate turning a BizTalk Receive Location on or off through code?

通过代码更改或管理BizTalk工件的另一种选择。