В приложении с web-приложениями C# я пытаюсь вернуть текущую выделенную память для виртуальных машин на нашем сервере Hyper-V. Я написал команду powershell, и у меня есть проверенный способ удаленного подключения к гипер-v-серверу и запуск блока сценариев. Я добавляю скрипт в виде строки, а затем вставляю его в конвейер с помощью ps.addscript (scriptString);Результат Результат от команды Powershell до переменной C#
Команда работает нормально, и нет никаких ошибок в применении, но я не знаю, как вернуть значение результата в C# переменной (предпочтительно Int)
Любые идеи о том, как мне это сделать? Не использовать пробелы, но не знаю, нужно ли мне это делать. Я просто хочу вызвать конвейер, а затем добавить свое выходное значение в переменную C#.
(я заменил IP-адрес с «1.1.1.1» для целей данного поста)
string breakLine = System.Environment.NewLine;
string getHyp1Use = "$hypUN = \"DOMAIN\\" + boxUN.Text + "\"" + breakLine +
" $hypPWD =ConvertTo-SecureString \"" + boxPWD.Text + "\" -AsPlainText -Force" + breakLine +
" $hypCREDS = New-Object System.Management.Automation.PSCredential($hypUN, $hypPWD)" + breakLine +
" set-item wsman:\\localhost\\Client\\TrustedHosts -value 1.1.1.1 -force" + breakLine +
" $builderSession = New-PSSession -ComputerName 1.1.1.1 -Credential $hypCREDS" + breakLine +
" Invoke-Command -Session $builderSession -ScriptBlock {Get-VM | Where { $_.State –eq ‘Running’ } | measure MemoryAssigned -Sum | select -ExpandProperty Sum}" + breakLine +
" Invoke-Command -ScriptBlock {Remove-PsSession -Session $builderSession}";
string hyp1Use = null;
PowerShell ps = PowerShell.Create();
ps.AddScript(getHyp1Use);
var results = ps.Invoke();