2017-02-15 4 views
1

Я пытаюсь обработать выход из файла журнала и поместить его на график. Тем не менее, я не могу положиться на Get-Content -Wait. Кажется, что моя программа на C# не вызывается вообще. Прекрасно работает без переключения ожидания, но это не то, что мне нужно. Простого примера:получает вывод Get-Content с переключателем wait в консольном приложении

using static System.Console; 

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     WriteLine("Starting..."); 
     if (IsInputRedirected) 
     { 
      while (In.Peek() != -1) 
      { 
       Write("["); 
       var input = In.ReadLine(); 
       WriteLine($"{input}]"); 
      } 
      WriteLine("... done."); 
     } 
     else 
     { 
      WriteLine("Nothing"); 
     } 
    } 
} 

С образцами вызовами, как:

gc .\Program.cs | .\bin\Debug.ConsoleTest.exe 

и

gc .\Program.cs -Wait | .\bin\Debug.ConsoleTest.exe 

ли кто-нибудь знают, как получить вывод Get-Content с -wait из консольного приложения ?

+0

Что такое «Get-Content» или «-Подождите»? похоже, что вы просто получаете данные из другой команды для эха. – BugFinder

+1

[This] (http://stackoverflow.com/questions/19919180/get-content-wait-not-working-as-described-in-the-documentation) сообщение говорит, что это ошибка, и что она исправлена ​​в Powershell 5. –

ответ

0

Get-content используется для получения содержимого файла, не отделяющего вывод программы u start. вы можете использовать get-content в файле log-файла u genarate, но знаете, что если вы будете использовать wait, он будет ждать, пока вы не убьете ожидаемые процессы.

так что в двух словах Get-content -Wait используется только для отслеживания файла журнала, написанного из другого процесса.

просто используйте .\Program.cs | .\bin\Debug.ConsoleTest.exe и он будет ждать до выхода. , если вы хотите, чтобы стандартный вывод и stderror вам нужна конструкция, как описанная Here (пожалуйста, обратите внимание, что проблема использования $stdout = $p.StandardOutput.ReadToEnd() ;$stderr = $p.StandardError.ReadToEnd() для больших выходов, они тупиковой друг друг)