小编Ste*_*own的帖子

如何重定向 stdout 和 stderr 而不污染 PowerShell 错误输出

问题:

我试图通过 PowerShell 运行命令并捕获其 stdout 和 stderr而不将它们打印在屏幕上(命令非常嘈杂并污染控制台)。

我想捕获变量中的 stdout 和 stderr,然后在找到特定字符串时抛出异常。

我的逻辑似乎正常工作,我可以在我期望的时候使 cmdlet 失败/通过,但是输出与我的期望不匹配,而不是返回我指定的错误消息,我得到的是我认为是 stderr 的内容命令代替?

我的代码:

(为了便于阅读而进行了简化)
第一个 cmdlet:

function Test-Validation
{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 0)]
        [Array]
        $ValidExitCodes = @(0),

        [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 1)]
        [bool]
        $FailOnWarning = $true
    )
    $Validation = . pdk validate 2>&1

    if ($LASTEXITCODE -notin $ValidExitCodes)
    {
        throw "Module validation has failed. Exit code: $($LASTEXITCODE)."
    }
    $Warnings = $Validation -match 'pdk \(WARNING\)' …
Run Code Online (Sandbox Code Playgroud)

error-handling powershell stderr

2
推荐指数
1
解决办法
1902
查看次数

标签 统计

error-handling ×1

powershell ×1

stderr ×1