Tag-arkiv: Compare-object

Sammenligning af tekstfiler

Jeg trækker ofte større lister ud af forskellige systemer og skal sammenligne listerne. Sålænge det er sammenlignelige data, eks brugernavne, burde det vel være en simpel sag..? Ja, sålænge det drejer sig om et lille antal. Men jeg sammenligner ofte tusindvis af eks brugernavne. Til det benytter jeg compare-object i Powershell.
Først skal man sikre sig at ens data grundlag er ens, altså har man 2 komma-separerede dokumenter der indeholder brugernavne, skal de enten KUN indeholde brugernavne eller også skal man kopiere brugernavnene over i en fil, så de er for sig selv. Jeg laver ofte 2 txt filer, lad os kalde dem compare1 og compare2. For at disse kan sammenlignes skal man hente indholdet af dem over i en variabel. Sammenligner man dem ved at skrive filnavnene som compare objekter, fortæller Compare-Object dig at filerne ikke er ens og det er jo i grunden korrekt. Men da det er indholdet vi vil have sammenlignet henter vi dem altså først ind i en variabel ved at skrive:

$Comparefile1 = Get-Content “sti”\compare1.txt

og ligeså for næste fil

$Comparefile1 = Get-Content “sti”\compare2.txt

Nu har vi altså 2 variabler der indeholder vores brugernavne (hvis det er det der er i filerne) og disse sammenligner man så ved at skrive:

Compare-Object $Comparefile1 $Comparefile2

Outputtet ligner dette:
User1 <=
User2 =>
Hvilket betyder at User1 er i comparefile1, User2 er i comparefile2.

Ønsker man også at have de brugere der er ens med, skal man bruge parameteren -includeequal og så bliver kommandoen:

Compare-Object $Comparefile1 $Comparefile2 -IncludeEqual

Outputtet ligner så dette:
User1 <=
User2 =>
User3==
Hvilket betyder at User1 er i comparefile1, User2 er i comparefile2 og User3 er i begge filer.

Ovenstående giver output til skærm og det er måske godt nok, men hvis det skal bruges efterfølgende kan man selvfølgelig også sende det til en komma-separeret fil ved at skrive følgende:

Compare-Object $Comparefile1 $Comparefile2 -IncludeEqual | Export-Csv C:\temp\csvfil.csv