【发布时间】:2018-10-05 10:32:12
【问题描述】:
Start-Process "powershell" -ArgumentList "-noexit -executionpolicy bypass -windowstyle minimized -command `"&{Invoke-Expression `'.\$exe $Arguments`' | Tee-Object `'$Logs`'}`""
此命令有效,但是我正在运行的 .exe 有彩色文本,例如:
[0m
这使得解析生成的 .log 文件变得困难。
有没有办法将 Tee-Object 转换为文件,并删除颜色输出?
另外,有没有办法做到这一点,同时保持控制台上的颜色,因为控制台显示相同的字符(无颜色)。
我一直在搜索,重写了一百种不同的方法,但我似乎找不到删除它的方法。
另外,如果除了invoke-expression | Tee-Object之外还有更简洁的方式来编写启动
这似乎是唯一适合我的。
【问题讨论】:
-
我认为你不能在进程运行时运行它。我想它是为了完成后。我会试试看,看看我得到了什么。但是他说输出颜色在屏幕上正确显示 - 这不适合我。 ANSII 颜色代码被放到屏幕上,而不是改变颜色。
-
Tee-ObjectNoColor cmdlet 说它是一个空字符串,尽管我在调用表达式之后使用管道。
-
或者,如果有一种方法我可以使用
Get-Content将日志显示到屏幕上,并且颜色语法会转换为实际颜色 - 我可能会处理解析 .log 文件,但是将.exe直接输出到文件...然后让powershell寡妇简单地显示日志文件代替.exe。但是我也没有想出一种方法来显示来自Get-Content的颜色。 -
我发现了
Tee-ObjectNoColor的工作原理——它只需要一点时间就可以启动。我也添加了它以删除转义字符。我现在唯一需要解决的就是如何在 exe 显示中保持颜色输出。
标签: powershell