8
私はC#でWindowsベースのクラスタを起動/停止しようとしていますが、これまで作業していたコードは以下のとおりです...下記のTakeOffLine関数に到達すると、例外は、System.Management.ManagementStatus.NotFoundからです。何が正確に見つからないのか分かりませんか?これを行うための(代替)良い方法がある場合は、私に知らせてください。C#からWindowsクラスタを管理する
ありがとうございます!
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);
}
}
代わりにPowerShellコマンドレットを使用してのまさかに従って
TakeOffline
使用する必要がありますか? –TakeOfflineとBringOnLineの両方がTakeofflineを呼び出していることに気付きましたか? –