У меня есть exe от Lenovo, который обеспечивает вывод командной строки только при запуске из окна cmd, но не из PowerShell. Похоже, что вывод идет из источника-призрака, отличного от StdOut или StdErr.
https://download.lenovo.com/pccbbs/mobiles/n2hgc06w.exe (вам нужно запустить и нажать кнопку установки, но все, что нужно сделать, это распаковать в c: \ drivers \ win \ touchpadfw). Обязательно отмените запрос установки после извлечения.
Эта команда дает мне вывод на консоль
& cmd.exe /c c:\drivers\win\touchpadfw\touchpadfw_aug2019\synreflash.exe /v /S 2
Это также дает мне вывод консоли и ничего в переменной
$var = (& cmd.exe /c c:\drivers\win\touchpadfw\touchpadfw_aug2019\synreflash.exe /v /S 2) 2>&1
То же самое здесь
$var = (& cmd.exe /c c:\drivers\win\touchpadfw\touchpadfw_aug2019\synreflash.exe /v /S 2 2>&1)
Мне кажется, что этот exe-файл выводится не так, как StdOut и StdErr, но я не знаю что. Ничто из того, что я пробовал, не может отразить то, что выводится. Есть ли третий способ вывода?
Вот где это становится странным. Используя «start cmd», чтобы открыть окно cmd из административной оболочки PowerShell, я запускаю exe-файл непосредственно в окне cmd, но вывод идет в родительскую консоль PowerShell. Я не могу получить никакого вывода, если я запускаю окно cmd от имени администратора.