PowerShell仅在使用输出重定向调用时捕获特定输出

kpbwa7wx  于 2022-12-18  发布在  Shell
关注(0)|答案(1)|浏览(181)

How To Capture Output from Non-elevated Process Run from Elevated Powershelloriginally accepted answer只包括git config的输出,当BAT文件调用powershell输出重定向(>dummy.txt)时。所有其他的输出都被捕获,不管是否应用了重定向。为什么?有没有办法捕获这个输出而不写入一个伪文件?

bnlyeluc

bnlyeluc1#

注:

  • 这个答案 * 没有 * 解决问题中描述/链接的非常具体的情景。
  • 相反,它解释了为什么runas.execaller 接收到 no 输出,因为runas.exe本身不产生任何输出,并且 launched processnew window 中运行。
  • 在调用者和启动的进程之间实现一个 * 自定义 * IPC机制可能是一个- complex -选项,例如在the answer中,它提示了您的问题。
  • 但是,这个alternative answer展示了如何让runas.exe启动的进程 * 自己 * 捕获其输出,如下所述。

runas.exe命令总是在一个 * 新的控制台窗口 * 中运行,从调用者的Angular 来看是异步的,并且在 * 调用者的 * 窗口中产生 no 输出。
因此,从通过runas.exe启动的进程捕获输出的唯一简单方法是使该进程 * 自己 * 在 * 文件 * 中捕获其输出,例如通过 shell>重定向;如果目标可执行文件不是shell,请通过shell的命令行界面调用它,例如通过cmd /cpowershell -c
请注意,如果您希望调用方等到runas.exe启动的进程完成运行,则需要通过Start-Process -Wait调用runas.exe,以便您可以检索并处理其完整输出。
这两个方面都在this answer中进行了演示。

相关问题