从Tee-Object Powershell移除颜色

时间:2018-10-04 06:39:09

标签: powershell

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

之外,还有更简洁的编写启动方式的方法

似乎是唯一适合我的人。

1 个答案:

答案 0 :(得分:0)

function Tee-ObjectNoColor {
    [CmdletBinding()]
    Param(
        [Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)]
        [string]$InputObject,

        [Parameter(Position=1, Mandatory=$true)]
        [string]$FilePath
    )

  process{
        $InputObject = $InputObject -replace '\\[\d+(;\d+)?m'
        $InputObject | Out-File $FilePath -Append
        $InputObject | Out-Host
         }
}

这就是我的方法。它会删除所有颜色符号,并在屏幕和日志上进行清洁。