Проблема вывода объекта сравнения PowerShell

Я сравниваю два длинных текстовых файла, запустив приведенный ниже скрипт и записав результаты в текстовый файл. Вместо ожидаемого стандартного вывода объекта сравнения я получаю его часть, а все остальное усекается (из-за максимального ограничения символов или формата шаблона или чего-то еще). Любые идеи, как записать необработанный вывод в файл или увеличить лимит символов в строке, чтобы получить правильные результаты? Файлы, которые я сравниваю, никак не могут быть сокращены или переформатированы, может быть, я мог бы использовать что-то другое вместо функции сравнения объекта?

Спасибо!

Автор сценария:

    function compareConfigs {

    Try{
        $compareOne = Get-Content $azConfig
        $comparetwo = Get-Content $dummyConfig
    } 
    Catch{
        Write-Host "Path is invalid or the file does not exist. "    
    }

Write-Host "Beginning comparison"
$Compare = Compare-Object $compareOne $compareTwo

$compare | foreach  { 
    if ($_.sideindicator -eq '<=')
        {$_.sideindicator = $azConfig}

    if ($_.sideindicator -eq '=>')
        {$_.sideindicator = $dummyConfig}
    }

$Compare | 
select @{l='Value';e={$_.InputObject}},@{l='File';e={$_.SideIndicator}} |
Out-File $compareResult

Write-Host "Complete!"
}

compareConfigs

Выход:

InputObject                                                                                                                                                                          
-----------                                                                                                                                                                          
      <add fileName="E:\Logs\LeadManagement\LeadService.log" rollSizeKB="4096" timeStampPattern="yyyy-MM-dd" rollFileExistsBehavior="Increment" rollInterval="Day" formatter="Text...
      <add template="Timestamp: {timestamp}&#xA;Message: {message}&#xA;Category: {category}&#xA;Priority: {priority}&#xA;EventId: {eventid}&#xA;Severity: {severity}&#xA;Title:{ti...
      <add fileName="E:\Logs\LeadManagement\LeadService.log" rollSizeKB="4096" timeStampPattern="yyyy-MM-dd" rollFileExistsBehavior="Increment" rollInterval="Day" formatter="Text...
      <add template="Timestamp: {timestamp}&#xA;Message: {message}&#xA;Category: {category}&#xA;Priority: {priority}&#xA;EventIwefwefd: {eventid}&#xA;Severity: {severity}&#xA;Tit...

1 ответ

Так как вы используете select-object, вы увидите, что ваш полученный $Compare является типом PSCustomObject. Вместо этого используйте Foreach-Object (%) ...

$Compare | %{($_.InputObject + "`t" + $_.SideIndicator)} | Out-File $compareResult

Обратите внимание, я использую вкладку "` т "в качестве разделителя здесь.

Если вы хотите получить вывод в формате CSV, вы можете использовать то, что у вас есть, и просто использовать Export-CSV вместо Out-File...

$Compare | select @{l='Value';e={$_.InputObject}},@{l='File';e={$_.SideIndicator}} | Export-CSV -Notype compareResult.csv
Другие вопросы по тегам