У меня возникли проблемы с распознаванием команды Get-Disk|Get-Partition
, поэтому я остановился на dir|select Name
. Надеюсь, в вашей среде вы можете заменить Get-Disk|Get-Partition
обратно.
Используется объект PowerShell
из System.Management.Automation
.
using (PowerShell powershell = PowerShell.Create()) {
powershell.AddScript("dir | select Name");
IAsyncResult async = powershell.BeginInvoke();
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject result in powershell.EndInvoke(async)) {
stringBuilder.AppendLine(result.ToString());
}
Console.WriteLine(stringBuilder);
}
Ради примера я просто звоню .BeginInvoke()
и использую .EndInvoke(async)
, чтобы продемонстрировать асинхронную часть этого. Вам нужно будет адаптировать это к вашим потребностям (то есть обработать результаты по-разному и т. Д.), Но я использовал этот класс PowerShell
много раз в прошлом и нашел его очень полезным.