powershell比较对象输出问题

powershell比较对象输出问题,powershell,format,text-files,pipeline,compareobject,Powershell,Format,Text Files,Pipeline,Compareobject,我通过运行下面的脚本并将结果写入文本文件来比较两个冗长的文本文件。我得到的不是预期的标准比较对象输出,而是其中的一部分,由于最大字符数限制或格式模板或其他原因,其他所有内容都被修剪。 如何将原始输出写入文件或增加行中字符的限制以获得正确的结果? 我比较的文件不能以任何方式缩短或重新格式化,也许我可以使用其他东西代替比较对象函数 谢谢大家! 脚本: function compareConfigs { Try{ $compareOne = Get-Content $

我通过运行下面的脚本并将结果写入文本文件来比较两个冗长的文本文件。我得到的不是预期的标准比较对象输出,而是其中的一部分,由于最大字符数限制或格式模板或其他原因,其他所有内容都被修剪。 如何将原始输出写入文件或增加行中字符的限制以获得正确的结果? 我比较的文件不能以任何方式缩短或重新格式化,也许我可以使用其他东西代替比较对象函数

谢谢大家!

脚本:

    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...

由于您使用的是select对象,您将看到生成的$Compare是PSCustomObject类型。相反,请使用Foreach对象%

$Compare | %{($_.InputObject + "`t" + $_.SideIndicator)} | Out-File $compareResult
注意,我在这里使用了一个tab`t作为分隔符

如果您希望以CSV格式输出,您可以使用现有内容,只需使用导出CSV而不是输出文件

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