2009-11-03 40 views
3

我使用MgmtClassGen.exe從.NET Framework SDK中生成的BizTalk工件,如主機,主機實例一些WMI包裝類等的BizTalk WMI遠程包裝

我使用HostSetting.GetInstances()獲取本地主機(本地BizTalk Server)。這工作正常。我現在正在尋找一種方法來爲另一臺具有不同BizTalk管理數據庫名稱的BizTalk計算機上的主機執行相同的操作。我找不到使用包裝類執行此操作的方法。我確實想要包裝類。任何想法如何連接到服務器'ServerX'上名爲'MyManagementDB'的BizTalk管理數據庫?

在此先感謝!

回答

2

您可以通過在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

0

我知道這可能被認爲是脫離主題,因爲你有點特別要求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項目。