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

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

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

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

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

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
Другие вопросы по тегам