powershell - 使用 PowerShell 将嵌套应用程序的所有输出写入特定日志文件
问题描述
我有一个powershell脚本,p.ps1
它运行一个批处理文件,b.bat
。批处理文件运行应用程序MyApp.exe
。我还有一个保存在本地变量中的日志文件$LogFile
。
有没有办法配置 PowerShell 脚本,使所有嵌套应用程序(包括MyApp.exe
)写入同一个日志文件,而不更改b.bat
和MyApp.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
。
解决方案
我想我找到了解决方案: 从 powershell 文件中: $command = "& 'b.bat' 'arg1' 'arg2'" Invoke-Expression $command | 添加内容 $LogFile
从 myApp 代码,用 C# 编写: Trace.WriteLine(msg);
这样,c# 程序就将所有内容都写到了屏幕上。powershell 脚本捕获输出并使用 Add-Content 命令将其添加到日志文件中。
推荐阅读
- github-actions - 从 git 操作容器推送时,Git 推送操作不起作用
- java - Java最大函数递归
- google-apps-script - 谷歌表格脚本无法识别拆分功能
- database - 制定 MongoDB 查询
- reactjs - TypeError:无法读取未定义的属性“包含” - 成功编译后 chrome 中的错误
- ios - 如何在以下用例的通知扩展和应用程序之间进行通信?
- c - 如何编写自己的 Makefile(.mak 文件)?
- excel - 如何找到不等于已列出的值的下一个最高 MAX
- c# - 如何使主菜单中的 ui 元素适合每个选定的分辨率?
- java - 在 meta-inf 中生成的清单文件缺少类路径引用