Я тестирую какой -то код, чтобы проверить, является ли именованным сервером частью кластера Azure. В настоящее время у меня есть простое консольное приложение, где пользователь вводит имя сервера, чтобы проверить, и код вызывает код < /p>
private static bool IsCluster(string ServerName)
{
try
{
var Command = new StringBuilder();
Command.Append("Get-ClusterResource | Where-Object { $_.Name -like \"SQL Network Name*\" } ");
Command.Append(" | Get-ClusterParameter -Name 'DNSName' | ");
Command.Append(" Select-Object -ExpandProperty Value");
Console.WriteLine($"PowerShell command is:");
Console.WriteLine(Command);
using (PowerShell PowerShellInstance = PowerShell.Create())
{
// Add the PowerShell script
PowerShellInstance.AddScript(Command.ToString());
ServerName = new string(ServerName.Where(X => !char.IsControl(X)).ToArray());
Console.WriteLine($"Cleaned Name is {ServerName}");
Console.WriteLine($"Checking is {ServerName} is part of a cluster");
// Execute the script
var PsOutput = PowerShellInstance.Invoke();
// Process the output
foreach (PSObject OutputItem in PsOutput)
{
if (OutputItem != null)
{
Console.WriteLine(OutputItem.ToString());
if (OutputItem.ToString().IndexOf(ServerName.Trim(), StringComparison.Ordinal) != -1)
{
Console.WriteLine($"{ServerName} is part of a cluster");
return true;
}
}
}
Console.WriteLine($"{ServerName} is not part of a cluster");
return false;
}
}
< /code>
Но это всегда возвращает false, даже при запуске на сервере в кластере и дает его имя. Есть идеи, что я делаю не так?
спасибо
Подробнее здесь: https://stackoverflow.com/questions/797 ... powershell