2017-05-02 2 views
0

Je compare deux longs fichiers texte ensemble en exécutant le script ci-dessous et en écrivant les résultats dans un fichier texte. Au lieu de la sortie de l'objet de comparaison standard attendu, j'en obtiens une partie et tout le reste est rogné (en raison de la limite de caractères maximum ou du modèle de format ou autre chose). Des idées comment écrire la sortie brute dans le fichier ou d'augmenter la limite de caractères dans une ligne pour obtenir les bons résultats? Les fichiers que je compare ne peuvent être raccourcis ou reformatés, peut-être que je pourrais utiliser autre chose que la fonction compare-object?powershell compare-object sortie problème

Merci!

Script:

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 

Sortie:

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

Répondre

1

Puisque vous utilisez sélectionnez-objet, vous verrez que votre Résultant $ Comparer est un type PSCustomObject. Au lieu de cela, utilisez Foreach-Object (%) ...

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

avis, je suis sur un onglet "` t" comme séparateur ici.

Si vous vouliez que votre sortie dans un fichier CSV, vous pouvez utiliser ce que vous avez et il suffit d'utiliser à la place Export-CSV Out-File ...

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