Natuurlijk, het vergelijken van bestanden of bestandsinhoud in Windows is iets wat je al jaren doet. Maar belast het niet je ogen op een gegeven moment om bestanden en inhoud te bekijken? Nou, gelukkig voor jou kun je objecten vergelijken met PowerShell zoals jij dat wilt met het Compare-Object
commando.
In deze tutorial leer je objecten vergelijken met PowerShell, zoals bestanden of bestandsinhoud, terwijl je de uitvoer aanpast.
Bespaar je ogen de belasting en vergelijk objecten effectief!
Vereisten
Deze tutorial zal een praktische demonstratie zijn, maar zolang je een Windows PC met PowerShell hebt, ben je klaar om te gaan. PowerShell versie 5.1 wordt gebruikt in deze tutorial.
Bestandsinhoud Vergelijken
Stel je voor dat je twee verschillende bestanden hebt met dezelfde inhoud. Hoe weet je of beide bestanden dezelfde inhoud behouden? Het uitvoeren van het Get-Content
commando kan de oplossing zijn. Het Get-Content
commando haalt de inhoud van een bestand op vanaf een opgegeven locatie.
Open PowerShell, en voer de onderstaande commando’s uit om de inhoud (Get-Content
) van de gespecificeerde bestanden in variabelen ($file1
en $file2
) te krijgen. Vervang het pad hieronder door het pad naar uw gekozen bestanden om te vergelijken.

Voer nu het Compare-Object
commando hieronder uit om de inhoud van $file
(-ReferenceObject
) te vergelijken met $file2
(-DifferenceObject
).
Standaard laat Compare-Object
niet de waarden zien die aanwezig zijn in beide variabelen. Als oplossing voegt u de -IncludeEqual
parameter toe om de waarden in de uitvoer te tonen.
Uit de onderstaande uitvoer vertelt de SideIndicator of beide bestanden dezelfde inhoud hebben (per regel) of niet:
SideIndicator | Definition |
== | Indicates the content is present in both files ($file1 and $file2). |
=> | Indicates the content only exists in the -DifferenceObject file ($file2). |
=> | Indicates the content only exists in the -ReferenceObject file ($file1). |

Misschien geeft u er de voorkeur aan om strings met hoofdlettergevoeligheid te vergelijken. Voeg in dat geval de -CaseSensitive
parameter toe, aangezien het Compare-Object
commando standaard niet hoofdlettergevoelig is.
Voer de onderstaande commando’s uit om $file1
te vergelijken met $file2
, zowel met als zonder hoofdlettergevoeligheid.
Zoals je hieronder kunt zien, toont het Compare-Object
-commando zonder de -CaseSensitive
-parameter niet de powershell in de uitvoer.

Het vergelijken van strings werkt op een vergelijkbare manier als het vergelijken van bestandsinhoud, waarbij je ofwel de strings kunt specificeren of variabelen kunt gebruiken om de te vergelijken strings voor te stellen. Houd er rekening mee dat het
Compare-Object
-commando bronstrings vergelijkt en niet tekens.
Vergelijken van lijsten met bestanden van verschillende locaties
Nu je weet hoe je bestandsinhoud kunt vergelijken, waarom niet daadwerkelijke bestanden vergelijken vanuit verschillende locaties? Het vergelijken van lijsten met bestanden is handig wanneer je twee verschillende servers beheert waar je dezelfde map voor een service met dezelfde bestanden behoudt.
Deze keer gebruik je het Get-ChildItem
-commando om de lijst met bestanden in een map op te halen om te vergelijken met de lijst met bestanden van een andere map.
Voer de onderstaande commando’s uit om de lijsten met bestanden op te halen uit de mappen C:\Temp\Folder1\ en C:\Temp\Folder2 en sla de lijsten op in de variabelen $Folder1List en $Folder2List.
Je kunt ook de
-Recurse
-parameter gebruiken in hetGet-Childitem
-commando om recursief een lijst met bestanden in submappen op te halen.

Vergelijk objecten met PowerShell op basis van eigenschappen
Je hebt zojuist bestanden op verschillende locaties vergeleken, maar je wilt misschien een andere optie toevoegen om bestanden te vergelijken op basis van eigenschappen. En in deze demo ga je bestanden vergelijken op basis van lastaccesstime.
Voer de volgende commando’s uit om bestanden uit verschillende mappen ($Folder1 en $Folder2) te vergelijken op basis van lastaccesstime.

Processen en Services Vergelijken
De mogelijkheden van het commando Compare-Object
zijn niet beperkt tot het vergelijken van strings of inhoud in bestanden. Je kunt ook processen, services, en dergelijke vergelijken.
Misschien wil je services tussen twee servers vastleggen. Zo ja, dan kun je de services in variabelen opslaan en de services vergelijken.
Voer de volgende commando’s uit om services te vergelijken tussen twee verschillende servers ($server1
en $server2
).

Als je processen wilt vergelijken, lijken de commando’s op die voor het vergelijken van services. Je kunt ook processen vergelijken op dezelfde machine of twee verschillende servers.
Voer de onderstaande commando’s uit om lopende processen van twee machines (Jumpbox
en AD
servers) in variabelen vast te leggen en te vergelijken.

Identificeren van activiteiten door lijsten met processen te vergelijken
De Compare-Object
-cmdlet is ook nuttig in bepaalde probleemoplossingsscenario’s. Hoe? Je kunt huidige actieve processen vastleggen in een variabele en je activiteit starten. Vervolgens leg je de actieve processen vast in een nieuwe variabele en vergelijk je de nieuwe processen.
Voer de onderstaande commando’s uit om activiteiten te identificeren door twee verschillende lijsten van vastgelegde processen te vergelijken.

Vergelijken van gebruikers tussen verschillende Active Directory-groepen
Als je dezelfde set gebruikers beheert vanuit verschillende AD-groepen, komt het vergelijken van de lijst met gebruikers met het Compare-Object
-commando van pas. Hiermee kun je nauwlettend in de gaten houden of een gebruiker ontbreekt in een van de twee verschillende AD-groepen.
Voer de onderstaande commando’s uit om gebruikers te vergelijken tussen twee verschillende AD-groepen (staticvmusers
en vdivmusers
).

Conclusie
In deze zelfstudie heb je geleerd hoe je objecten kunt vergelijken met PowerShell op verschillende manieren, van bestandsinhoud tot gebruikers in AD-groepen. Je hebt gemerkt dat het Compare-Object
-cmdlet een snelle oplossing is om bestanden, services, processen, enzovoort te vergelijken.
Je hebt de basisprincipes geleerd van het gebruik van het Compare-Object
-cmdlet. Waarom bouw je niet voort op deze nieuwe kennis door krachtige PowerShell-arrays te leren vergelijken?
Source:
https://adamtheautomator.com/compare-objects-with-powershell/