При попытке выполнить TakeOffline
или BringOnline
у ресурса кластера получаю следующую ошибку:
System.Management.ManagementException: Generic failure
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementObject.InvokeMethod(String methodName, ManagementBaseObject inParameters, InvokeMethodOptions options)
При этом ресурс успешно останавливается или запускается.
ClusterManager
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;
EnvironmentManager env = EnvironmentManager.Instance();
Options = new ConnectionOptions
{
Authentication = AuthenticationLevel.PacketPrivacy,
Username = env.UserName,
Password = env.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 List<ManagementObject> GetClusterNodes()
{
List<ManagementObject> list = new List<ManagementObject>();
string wmiClassName = "MSCluster_Node";
ManagementClass managementClass = new ManagementClass(Scope, new ManagementPath(wmiClassName), null);
managementClass.Get();
ManagementObjectCollection objectCollection = managementClass.GetInstances();
foreach (ManagementBaseObject obj in objectCollection)
{
list.Add((ManagementObject)obj);
}
return list;
}
public void TakeOffline(ManagementObject resource)
{
try
{
resource.InvokeMethod("Takeoffline", null, null);
}
catch (Exception ex)
{
// ошибка здесь
LogManager.Error(ex.ToString());
}
}
public void BringOnline(ManagementObject resource)
{
try
{
resource.InvokeMethod("Bringonline", null, null);
}
catch (Exception ex)
{
// ошибка здесь
LogManager.Error(ex.ToString());
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как и при помощи какого метода можно записать целочисленное int в byte[]
Создал мини карту, столкнулся с проблемой такого рода: Когда герой на земле то размер идентификатора врага нормальный, Но мой герой летает...
Есть файл ASPX и соответствующий ему файл ASPXCS (CodeBehind="Filename