2011-02-01 6 views
8

Windows tabanlı bir kümeyi C# başlatmaya/durdurmaya çalışıyorum, aşağıda çalıştığım kod şu şekildedir ... TakeOffLine işlevine ulaştığımda aşağıdaki "Bir" Bulunamadı System.Management.ManagementStatus.NotFound öğesinden istisna. Tam olarak bulunmadığından emin değil misiniz? Bunu yapmanın bir (alternatif) daha iyi yolu varsa lütfen bana bildirin.C kümesinden bir pencere kümesini yönetme #

Teşekkürler!

using System.Management; 
class App 
{ 
    public static void Main() 
    { 
     string clusterName = "clusterHex"; // cluster alias 
     string custerGroupResource = "clusterHex.internal.com"; // Cluster group name 

     ConnectionOptions options = new ConnectionOptions(); 
     options.Authentication = System.Management.AuthenticationLevel.PacketPrivacy; 

     // Connect with the mscluster WMI namespace on the cluster named "MyCluster" 
     ManagementScope s = new ManagementScope("\\\\" + clusterName + 
      "\\root\\mscluster", options); 

     ManagementPath p = new ManagementPath("Mscluster_Clustergroup.Name='" + custerGroupResource + "'"); 

     using (ManagementObject clrg = new ManagementObject(s, p, null)) 
     { 
      // Take clustergroup off line and read its status property when done 
      TakeOffLine(clrg); 
      clrg.Get(); 
      Console.WriteLine(clrg["Status"]); 
      System.Threading.Thread.Sleep(3000); // Sleep for a while 
      // Bring back online and get status. 
      BringOnLine(clrg); 
      clrg.Get(); 
      Console.WriteLine(clrg["Status"]); 

     } 
    } 
    static void TakeOffLine(ManagementObject resourceGroup) 
    { 
     ManagementBaseObject outParams = 
     resourceGroup.InvokeMethod("Takeoffline", null, null); 
    } 
    static void BringOnLine(ManagementObject resourceGroup) 
    { 
     ManagementBaseObject outParams = 
     resourceGroup.InvokeMethod("Takeoffline", null, null); 
    } 
} 
+1

yerine Powershell cmdlet'lerinizi kullanmanın yolu yok göre TakeOffline kullanmak zorunda? –

+4

Hem TakeOffline hem de BringOnLine'in Takeoffline'ı çektiğini fark ettiniz. –

cevap

3

Metodunuzun çağrısında bir eksiklik var gibi görünüyor. Sen msdn

static void TakeOffLine(ManagementObject resourceGroup) 
{ 
    ManagementBaseObject outParams = 
    resourceGroup.InvokeMethod("TakeOffline", null, null); 
}