2016-07-28 6 views
0

Я написал сценарий, который похож на этот, я использую $output1, чтобы получить redirect выход стандарта verbose.Powershell Standard Подробно для переменной

$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