的BizTalk WMI远程包装

问题描述:

我使用MgmtClassGen.exe从.NET Framework SDK中生成的BizTalk工件,如主机,主机实例一些WMI包装类等的BizTalk WMI远程包装

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

在此先感谢!

您可以通过在WMI范围声明中指定不同的服务器来连接。

在你的代码将类似如下:

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

在构造函数调用的第一个参数是有范围的。这可以包括如下图所示的服务器名称:

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

我不相信你会需要知道消息框的名字 - WMI MicrosoftBizTalkServer提供商应该让你直接访问服务器上的主机实例。

EDIT

如马克西姆在下面的评论所指出的,有设置WMI范围的一种方式,更加综合与由MgmtClassGen.exe工具生成的代码。

这使您可以设置生成的类的StaticScope属性。这仍然涉及到构建一个定义范围的字符串,但只给出一个地方来定义它。 Maxime有一个不错的职位定义一个助手类,建立StaticScope字符串。

+1

或者,要使用更“集成”的语法,您可以利用MgmtClassGen.exe生成的强类型类具有“StaticScope”属性的事实,您可以使用该属性从远程主机访问相关工件。 请看我的博客条目以获取更多信息: http://maxime-labelle.spaces.live.com/blog/cns!D8D9369449D177DA!156.entry – 2009-11-29 18:18:49

+0

感谢maxime - 我从来没有真正使用过MgmtClassGen.exe工具的回答基于WMI的第一原则。希望你不介意我把上面的信息编辑到我的答案中以给出更好的答案。 – 2009-11-29 20:28:24

+0

没问题。很高兴帮助。 – 2009-12-09 20:47:33

我知道这可能被认为是脱离主题,因为你有点特别要求WMI,但也有一个.NET库,提供访问所有BizTalk工件,称为Microsoft.BizTalk.ExplorerOM.dll。我用它来打开/关闭小C#应用程序中的接收位置。这里是我以前的堆栈溢出问题的链接更多的信息:

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

只是另一种选择通过代码改变或给药BizTalk项目。