首页 > 解决方案 > 从 Tee-Object 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

它似乎是唯一对我有用的。

标签: powershell

解决方案


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
         }
}

我就是这样做的。它删除了所有颜色符号,在屏幕和日志上都保持干净。


推荐阅读