我正在使用.Net Framework SDK中的MgmtClassGen.exe为主机,主机实例等BizTalk工件生成一些WMI包装类。
我正在使用HostSetting.GetInstances()来获取本地主机(本地BizTalk Server)。这很好用。我现在正在寻找一种方法来为另一台具有不同BizTalk管理数据库名称的BizTalk机器上的主机执行相同的操作。我无法使用包装类找到一种方法。我确实想要包装类。知道如何连接到服务器'ServerX'上名为'MyManagementDB'的BizTalk Management数据库?
提前致谢!
答案 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工件的另一种选择。