首页 > 解决方案 > 使用 PowerShell 将嵌套应用程序的所有输出写入特定日志文件

问题描述

我有一个脚本,p.ps1它运行一个b.bat。批处理文件运行应用程序MyApp.exe。我还有一个保存在本地变量中的日志文件$LogFile

有没有办法配置 PowerShell 脚本,使所有嵌套应用程序(包括MyApp.exe)写入同一个日志文件,而不更改b.batMyApp.exe

我已经尝试过:

Start-Process "cmd.exe" "/c b.bat" -Wait | Add-Content $LogFile

Start-Process "cmd.exe" "/c b.bat" -Wait | Out-File $LogFile -Append

预期成绩:

所有输出都将被写入$LogFile我不在乎输出是否会被写入另一个日志文件,由MyApp.exe.

实际结果:

的所有输出都b.bat被写入$LogFile,但 的输出MyApp.exe被写入另一个日志文件,由 的代码配置MyApp.exe

标签: powershellbatch-file

解决方案


我想我找到了解决方案: 从 powershell 文件中: $command = "& 'b.bat' 'arg1' 'arg2'" Invoke-Expression $command | 添加内容 $LogFile

从 myApp 代码,用 C# 编写: Trace.WriteLine(msg);

这样,c# 程序就将所有内容都写到了屏幕上。powershell 脚本捕获输出并使用 Add-Content 命令将其添加到日志文件中。


推荐阅读