Powershell 标准详细到变量

Powershell Standard Verbose to a variable

我写了一个这样的脚本,我使用$output1为了redirect the output of the standard verbose

$output1 = $(
    cmdlet1 [Some Parameters] -Verbose | % {
        cmdlet2 [Other Some Parameters] -Verbose
    } ) 4>&1

当我不将标准详细信息存储在变量中时,它会以一种很好的方式在 powershell 中打印,并带有换行符。 但是当我在 $output1 中捕获标准详细信息并将其保存在文件中时,它会在一个很长的单行中打印所有内容。

我怎样才能以一种好的方式在我的变量中存储标准的详细信息?

据我所知,这没有简单的语法。为什么?因为管道输出否则会干扰冗长、警告和错误消息。仍然有解决方法,稍微复杂一点。将您的详细输出重定向到临时文件、获取内容、删除文件。看一看:

$resultFile = [System.IO.Path]::GetTempFileName();
1| % {
    $x = [System.IO.Path]::GetTempFileName();
    rm $x -Verbose
} 4>$resultFile
$result = cat $resultFile
rm $resultFile

在你的例子中:

$resultFile = [System.IO.Path]::GetTempFileName();
$(
cmdlet1 [Some Parameters] -Verbose | % {
    cmdlet2 [Other Some Parameters] -Verbose
}) 4>&1
$output1 = cat $resultFile
rm $resultFile