Powershell标准详细到变量



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

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

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

如何以良好的方式将标准verbose存储在变量中?

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

$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

相关内容

  • 没有找到相关文章

最新更新