Я пытаюсь использовать ASP.NET для возврата общей загрузочной ОЗУ на виртуальную машину на сервере Hyper-V. Функция у меня есть это:Проблемы с возвратом командной строки Get-VMMemory
public static double GetRamVM(string vm, string host)
{
string cmdToRun = "get-vmmemory -name " + vm + " -computername " + host + " | select Startup" ;
var shell = PowerShell.Create();
shell.Commands.AddScript(cmdToRun);
var mem = shell.Invoke();
foreach (PSObject obj in mem)
{
var startMem = obj.Members["Startup"].Value;
return (double)startMem;
}
return 9999.9999;
}
Однако, когда я вернуть его - это всегда возвращается как 9999.9999. Я знаю, что команда работает, так как когда я запускаю ее вручную в окне powershell, я получаю результат, который мне нужен.
Пожалуйста, помогите - как я сойду с ума.
Edit: Руководство запуска сценария выглядит следующим образом
PS C:\Users\mark> Get-VMMemory -vmname "test test" -computername "testhost" | select Startup
Startup
-------
536870912
Почему у вас есть это, тогда 'return 9999.9999;'? – Matt
Отлаживайте свой код. Если 'mem' не содержит элементов, возможно, это проблема с разрешением. – CodeCaster
Это не разрешения (идентификатор пула приложений, который используется, совпадает с тем, что я запускаю как скрипт вручную). Кроме того, если я просто выгружаю mem.ToString(), он возвращает System.Collections.ObjectModel.Collection'1 [System.Management.Automation.PSObject] –