0

我写了一个这样的脚本,我使用$output1重定向标准verbose的输出。

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

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

如何以一种好的方式将标准详细信息存储在我的变量中?

4

1 回答 1

1

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

$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
于 2016-07-28T10:22:44.323 回答