Используя хост PowerShell из С#, как я могу получить результат?

Наличие следующего консольного приложения NET 5:

      static void Main(string[] args)
{
    using var ps = PowerShell.Create();
    // ps.AddCommand("Get-Service");
    ps.AddStatement().AddCommand("Get-Service");
    ps.Invoke();
}

Вызовы, кажется, выполняются без ошибок, но куда идет вывод? я пробовал оба AddCommandа также AddStatement, а также рассмотрел psпеременная в отладчике, никаких признаков вывода. я обнаружил ps.Streams.Informationно он пустой.

1 ответ

Как подробно описано в документации по методу PowerShell.Invoke , он возвращает коллекцию, содержащую все результаты, полученные в результате операции PowerShell.

Таким образом, вы можете написать

      static void Main(string[] args)
{
    using var ps = PowerShell.Create();
    ps.AddStatement().AddCommand("Get-Service");
    var results = ps.Invoke();

    foreach (var result in results)
    {
        Console.WriteLine(result);
    }
}
Другие вопросы по тегам