【发布时间】:2020-05-19 12:45:01
【问题描述】:
我有来自 Lenovo 的 exe,它仅在从 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”从管理员 PowerShell 打开一个 cmd 窗口,我直接在 cmd 窗口中运行 exe,但输出到父 powershell 控制台。如果我直接以管理员身份启动 cmd 窗口,我将无法获得任何输出。
【问题讨论】:
-
你试过redirecting所有输出和
*>&1吗? -
@Iconiu,如果下面更新的解决方案回答了您的问题,请告诉我,如果是,您可以单击绿色复选框标记为已解决。干杯!!
标签: powershell redirect output exe stderr