Я ссылаюсь на файл DLL, содержащий класс C ++, который мне нужен для API. Конструктор по умолчанию для этого класса направляет стену текста в поток, которого я не могу коснуться, насколько я могу судить. Я перенаправил выходные потоки по одному, чтобы попытаться изолировать его, и достиг 6, не оказав успешного воздействия на текст. Это регистрация данных, и мне плевать на это в этом контексте; Я бы хотел, чтобы это ушло.
Текст не возвращается конструктором (объект возвращается как обычно), он просто отправляется на консоль во время выполнения конструктора. Я думаю, именно поэтому Out-Null и> $ null ничего не делают.
Текст не очевидно в консоли, когда я запускаю ту же процедуру в ISE! Это подсказка, и я отправился на поиски различий в окружающей среде, но существует множество различий в окружающей среде. Какие из них я должен исследовать?
Я думаю, что важным отличием является то, что PowerShell.exe является консольной подсистемой приложения. Любой вид вывода на стандартный вывод (printf, cout << ‘foo’ и т. д.) появится в консоли. ISE, с другой стороны, является приложением подсистемы Windows — без консоли. То, что вы видите как панель консоли в ISE, — это просто еще одно окно инструментов, которое выглядит и ведет себя как консоль, как консоль диспетчера пакетов NuGet в Visual Studio.