Я создал веб-приложение asp.net для внутреннего использования, которое позволяет определенным пользователям запускать и останавливать виртуальные машины, связанные с этими средами тестирования качества. Код на странице запускает скрипт powershell, который запускает выбранный сервер один раз кнопкойнажата на странице ASP.net.
Я повторно зарезервировал и внедрил много кода с этого сайта, но у меня возникают некоторые проблемы.
каждый раз, когда я нажимаю кнопку наНа главной веб-странице ошибка, возвращаемая из сценария powershell, гласит: «Вы не можете вызвать метод для выражения с нулевым значением».единственная проблема в том, что если я запускаю его из командной строки powershell, например, ". \ script \ test.ps1 'W7EA9'", он работает нормально.
Это класс, который вызывает скрипт powershell.
public String Startserver(String Servername)
{
String scriptText =". \\scripts\\test.ps1 " + Servername + "";
// create Powershell runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
// open it
runspace.Open();
// create a pipeline and feed it the script text
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(scriptText);
// execute the script
Collection<PSObject> results = new Collection<PSObject>();
try
{
results = pipeline.Invoke();
}
catch (Exception ex)
{
results.Add(new PSObject((object)ex.Message));
}
// close the runspace
runspace.Close();
// convert the script result into a single string
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
return stringBuilder.ToString();
//return scriptText;
}
и вот сценарий powershell, который он пытается запустить
Param ($server = $arg[0])
$Core = get-wmiobject -namespace root\virtualization -class Msvm_Computersystem -filter "ElementName = '$server'"
$status = $Core.RequestStateChange(2) `
Это может быть чем-то действительно очевидным, но я просто не вижу его, и любая помощь будет отличной.
спасибо
Крис