Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string clusterName = "app-server.local";
- string custerGroupResource = "cluster.server.local";
- ConnectionOptions options = new ConnectionOptions
- {
- Authentication = AuthenticationLevel.PacketPrivacy
- };
- ManagementScope s = new ManagementScope("\\" + clusterName, options);
- ManagementPath p = new ManagementPath("Mscluster_Clustergroup.Name='" + custerGroupResource + "'");
- using (ManagementObject clrg = new ManagementObject(s, p, null))
- {
- clrg.Get();
- Console.WriteLine(clrg["Status"]);
- }
- public class ClusterManager
- {
- private readonly string ClusterName;
- private readonly string ClusterNamespace;
- private ManagementScope Scope;
- private readonly ConnectionOptions Options;
- public ClusterManager(string clusterName, string clusterNamespace, string user, string password)
- {
- ClusterName = clusterName;
- ClusterNamespace = clusterNamespace;
- Options = new ConnectionOptions
- {
- Authentication = AuthenticationLevel.PacketPrivacy,
- Username = user,
- Password = password
- };
- }
- public void Connect()
- {
- Scope = new ManagementScope($@"\{ClusterName}root{ClusterNamespace}", Options);
- Scope.Connect();
- }
- public ManagementObject GetResource(string name)
- {
- string wmiClassName = "MSCluster_Resource";
- ManagementClass managementClass = new ManagementClass(Scope, new ManagementPath(wmiClassName), null);
- managementClass.Get();
- ManagementObjectCollection objectCollection = managementClass.GetInstances();
- foreach (ManagementBaseObject obj in objectCollection)
- {
- ManagementObject resource = (ManagementObject) obj;
- if (resource["Name"].ToString() == name)
- {
- return resource;
- }
- }
- return null;
- }
- public void TakeOffline(ManagementObject resource)
- {
- resource.InvokeMethod("Takeoffline", null, null);
- }
- public void BringOnline(ManagementObject resource)
- {
- resource.InvokeMethod("Bringonline", null, null);
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System;
- using System.Management;
- namespace MyNamespace
- {
- public class ClusterAdmin
- {
- [MTAThread]
- public static void Main()
- {
- string clusterName = "MyCluster"; // cluster alias
- string custerGroupResource = "FS_Resource1"; // Cluster group name
- ConnectionOptions options = new ConnectionOptions();
- options.Username = "ClusterAdmin"; //could be in domainuser format
- options.Password = "HisPassword";
- // 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);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement