как получить строку вывода из консоли powershell?
Работа такая : пишу микро тулзу на Unity для работы с ARFoundation. Для этого нужно научиться нормально юзать консоль через код.
Логика программы простая - вводим команду, через экзешник получаем результат.
Работает всё примерно так
string pathToExe = Application.dataPath.Replace(@"/", @"\") + "\\ARCoreCheck\\";
string command = pathToExe + "arcoreimg.exe eval-img --input_image_path=C:\\UsingFiles\\UnityProjects\\ARTestProject\\Assets\\ARCoreCheck\\IMG_7432.png";
Process process = Process.Start("powershell.exe", command);
Посмотрите на тему Process.StandardOutput
Пытался, но даёт ошибку(
InvalidOperationException: StandardOut has not been redirected or the process hasn't started yet. System.Diagnostics.Process.get_StandardOutput () (at <aa976c2104104b7ca9e1785715722c9d>:0) (wrapper remoting-invoke-with-check) System.Diagnostics.Process.get_StandardOutput() WorkingWithConsole.ARcoreChecking () (at Assets/WorkingWithConsole.cs:28) WorkingWithConsole.OnInspectorGUI () (at Assets/WorkingWithConsole.cs:17) UnityEditor.UIElements.InspectorElement+<>c__DisplayClass59_0.<CreateIMGUIInspectorFromEditor>b__0 () (at
Ну вот вам ошибка всё и рассказала - вы не сделали перенаправление вывода. RedirectStandardOutput надо поставить в true
Добавил строку process.StartInfo.RedirectStandardOutput = true; Всё также
А может вы вместо метода тыка сходите документацию почитать? https://docs.microsoft.com/ru-ru/dotnet/api/system.diagnostics.processstartinfo.redirectstandardoutput?view=net-5.0#System_Diagnostics_ProcessStartInfo_RedirectStandardOutput
Не очень ясно, а зачем тут PowerShell. Кажется, ты просто бинарник запускаешь.
В одном из семплов кода увидел, поэтому решил использовать его
Дак он тебе не нужен.
Ну, у меня все пока что работает, поэтому я в данный момент счастлив :D
Обсуждают сегодня