Powershell Standard Verbose для переменной

Я написал подобный скрипт, я использую $output1 для перенаправления вывод стандартного подробного.

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

Когда я не храню стандартный verbose в переменной, он печатает в powershell по-хорошему, с новой строкой. Но когда я записываю стандартную подробную информацию в $output1 и сохраняю ее в файл, она печатает все в одну очень длинную строку.

Как я могу сохранить в своей переменной стандартную подробную информацию в хорошем смысле?


person Hari    schedule 28.07.2016    source источник


Ответы (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
person Paweł Dyl    schedule 28.07.2016