使用 WMI 更新接收處理常式主控件關聯

 

使用下列程式碼來更新 MSBTS_ReceiveHandler 主機關聯。

using System.Management;  
  
      //Sample to show MSBTS_HostSetting host association update  
      public void UpdateReceiveHandler(string AdapterName, string HostName, string HostNameToSwitchTo)  
      {  
         try  
         {  
            PutOptions options = new PutOptions();  
            options.Type = PutType.UpdateOnly;  
  
            //Look for the target WMI Class MSBTS_ReceiveHandler instance  
            string strWQL = "SELECT * FROM MSBTS_ReceiveHandler WHERE AdapterName =\"" + AdapterName + "\" AND HostName = \"" + HostName + "\"";  
            ManagementObjectSearcher searcherReceiveHandler = new ManagementObjectSearcher (new ManagementScope ("root\\MicrosoftBizTalkServer"), new WqlObjectQuery(strWQL), null);  
  
            if (searcherReceiveHandler.Get().Count > 0)  
               foreach (ManagementObject objReceiveHandler in searcherReceiveHandler.Get())  
               {  
                  //update host association  
                  objReceiveHandler["HostNameToSwitchTo"] = HostNameToSwitchTo;  
                  //update the ManagementObject  
                  objReceiveHandler.Put(options);  
                  System.Console.WriteLine("ReceiveHandler - " + AdapterName + " " + HostNameToSwitchTo + " - has been updated successfully");  
               }  
            else  
               System.Console.WriteLine("ReceiveHandler - " + AdapterName + " " + HostName + " - cannot be found");                 
         }  
         catch(Exception excep)  
         {  
            System.Console.WriteLine("UpdateReceiveHandler - " + AdapterName + " " + HostName + " - failed: " + excep.Message);  
         }  
      }  
Option Explicit  
  
' wbemChangeFlagEnum Setting  
const UpdateOnly = 1  
  
' Sample to show MSBTS_ReceiveHandler host association update  
Sub UpdateReceiveHandler (AdapterName, HostName, HostNameToSwitchTo)  
   On Error Resume Next  
  
   Dim Query, ReceiveHandlerInstSet, Inst  
  
   ' Look for the target WMI Class MSBTS_ReceiveHandler instance  
   Query = "SELECT * FROM MSBTS_ReceiveHandler WHERE AdapterName =""" & AdapterName & """ AND HostName = """ & HostName & """"  
   Set ReceiveHandlerInstSet = GetObject("Winmgmts:!root\MicrosoftBizTalkServer").ExecQuery(Query)  
  
   If ReceiveHandlerInstSet.Count > 0 Then  
      For Each Inst In ReceiveHandlerInstSet  
         ' Update host association  
         Inst.HostNameToSwitchTo = HostNameToSwitchTo  
         Inst.Put_(UpdateOnly)  
  
         ' Check for error condition before continuing.  
         CheckWMIError  
         wscript.echo "Receive Handler - " & AdapterName & " " & HostNameToSwitchTo & " - has been updated successfully"  
      Next  
   Else  
      wscript.echo "Receive Handler - " & AdapterName & " " & HosTName & " - cannot be found"  
      wscript.quit 0  
   End If  
  
end Sub  
  
'This subroutine deals with all errors using the WbemScripting object.  Error descriptions  
'are returned to the user by printing to the console.  
Sub   CheckWMIError()  
  
   If Err <> 0   Then  
      On Error Resume   Next  
  
      Dim strErrDesc: strErrDesc = Err.Description  
      Dim ErrNum: ErrNum = Err.Number  
      Dim WMIError : Set WMIError = CreateObject("WbemScripting.SwbemLastError")  
  
      If ( TypeName(WMIError) = "Empty" ) Then  
         wscript.echo strErrDesc & " (HRESULT: "   & Hex(ErrNum) & ")."  
      Else  
         wscript.echo WMIError.Description & "(HRESULT: " & Hex(ErrNum) & ")."  
         Set WMIError = nothing  
      End   If  
  
      wscript.quit 0  
   End If  
  
End Sub   

另請參閱

WMI 腳本範例
MSBTS_ReceiveHandler (WMI)