Met automatisering is het lezen van gegevens uit een tekstbestand een veelvoorkomend scenario. De meeste programmeertalen hebben minstens één manier om tekstbestanden te lezen, en PowerShell is geen uitzondering. De PowerShell `Get-Content` cmdlet, een equivalent van de PowerShell tail, leest de inhoud van een tekstbestand en importeert de gegevens in een PowerShell-sessie.
De PowerShell `Get-Content` cmdlet is een onmisbaar hulpmiddel wanneer je tekstbestanden als invoer voor je script moet gebruiken. Misschien moet je PowerShell-script een computermachtiging lezen om te controleren of een e-mailsjabloon importeren om naar je gebruikers te sturen. PowerShell `Get-Content` ondersteunt deze scenario’s gemakkelijk!
Wat dacht je van het volgen van een logbestand in realtime? Ja, de PowerShell `Get-Content` kan dat ook!. Blijf dit artikel lezen, en je leert hoe je de `Get-Content` cmdlet kunt gebruiken om tekstbestanden in PowerShell te lezen.
Vereisten
Als je geïnteresseerd bent in het volgen van de voorbeelden in deze tutorial, heb je de volgende vereisten nodig.
- Je hebt een computer nodig die draait op Windows 10. Deze tutorial gebruikt Windows 10 versie 20H2. Maar maak je geen zorgen, je zult het wel redden met de Windows 10-versie die je hebt.
- Je moet minstens Windows PowerShell 5.1 hebben, of PowerShell 7.1 geïnstalleerd hebben op je computer. Hier wordt PowerShell 7.1 gebruikt, maar elke versie zal werken!
- Je zult commando’s schrijven en testen, dus je hebt een code-editor nodig. De aanbevolen editors zijn Windows PowerShell ISE, ingebouwd in Windows, en Visual Studio Code (VSCode). Dit artikel maakt gebruik van VSCode.
- Het zal ook helpen als je een werkmap op je computer maakt. De werkmap kan overal zijn waar je maar wilt. Merk echter op dat de voorbeelden in deze tutorial zich bevinden in de C:\demo map.
- Om te beginnen heb je wat inhoud nodig! Maak een bestand aan, in je werkmap, met de naam fruits.txt dat tien verschillende fruitsoorten bevat voor eenvoud. Je zult dit tekstbestand gebruiken in alle voorbeelden.
Weet je niet welke versie van PowerShell je hebt? Bezoek het artikel Hoe controleer je je PowerShell-versie (Alle manieren!).
Het lezen van een tekstbestand en het resultaat teruggeven als een string array
De Get-Content
cmdlet leest de inhoud uit een bestand en retourneert standaard elke regel van een tekstbestand als een string object. Als gevolg daarvan wordt de verzameling PowerShell-objecten een array van string-objecten.
De onderstaande code leest de inhoud van het fruits.txt bestand en geeft het resultaat weer op de PowerShell-console zoals te zien is in de onderstaande schermafbeelding.

Get-Content
.Get-Content
leest en slaat de inhoud op als een array, maar hoe weet je dat zeker? Sla eerst de inhoud op naar een PowerShell-object dat je vervolgens kunt onderzoeken om het type te bepalen.
Bekijk de onderstaande schermafbeelding, de variabele $fruits
is een array die tien objecten bevat. Elk object vertegenwoordigt een enkele regel tekst.

Een Specifieke Regel Uit een Tekstbestand Teruggeven
In het vorige voorbeeld heb je geleerd dat het standaard resultaat van Get-Content
een array of een collectie van objecten is. Elk item in een collectie komt overeen met een indexnummer, en PowerShell-indexen beginnen typisch bij nul.
De onderstaande schermafbeelding toont dat er tien items in de string-array zijn. De array heeft de tien items geïndexeerd van nul tot negen.

Om alleen de vijfde regel inhoud weer te geven, moet je het indexnummer 4
specificeren, tussen vierkante haken (bekend als array-notatie).
Je kunt opmerken dat de
Get-Content
-opdracht tussen haakjes staat. Deze notatie vertelt PowerShell om de opdracht tussen de haakjes eerst uit te voeren voordat andere bewerkingen worden uitgevoerd.
In de onderstaande schermafbeelding zie je dat het enige geretourneerde resultaat raspberry
is, wat het item op index 4
is en overeenkomt met de vijfde regel in het tekstbestand.

Get-Content
results.Wat als je de inhoud in de laatste regel wilt krijgen? Gelukkig hoef je het totale aantal regels niet te weten. Gebruik in plaats daarvan [-1]
als het indexnummer, en Get-Content
zal alleen de laatste regel van het bestand weergeven.
Het Aantal Teruggegeven Topresultaten Beperken door Get-Content
Gebruik de TotalCount
-parameter van Get-Content
om een specifiek aantal regels uit een tekstbestand op te halen. De TotalCount
-parameter accepteert een long-waarde, wat betekent dat het een maximale waarde van 9.223.372.036.854.775.807 is.
Bijvoorbeeld, de onderstaande opdracht leest de inhoud en beperkt het resultaat tot drie items.
Zoals je zou verwachten, toont het resultaat hieronder alleen de bovenste drie regels vanaf het begin van het tekstbestand.

Get-Content
command and the TotalCount
parameter.Gebruik de PowerShell Tail-parameter om resultaten vanaf het einde van een bestand terug te krijgen
In het vorige voorbeeld gebruikte je de PowerShell Get-Content
-cmdlet om een tekstbestand te lezen en de topresultaten te beperken. Het is ook mogelijk om het tegenovergestelde te bereiken met PowerShell Get-Content
. Gebruik de PowerShell Tail
-parameter om een specifiek aantal regels vanaf het einde van een bestand te lezen.
Het onderstaande voorbeeldcode leest het tekstbestand en toont de inhoud van de onderste vier regels.
Na het uitvoeren van de PowerShell tail
-opdracht zal het verwachte resultaat beperkt zijn tot de laatste vier regels van de inhoud, zoals getoond in de onderstaande afbeelding.

Get-Content
Tail
parameter. De Tail
-parameter wordt vaak samen gebruikt met de Wait
-parameter. Het gebruik van de Wait
-parameter houdt het bestand open en controleert elke seconde op nieuwe inhoud. De onderstaande demonstratie toont de Tail
– en Wait
-parameters in actie. Om Wait
te verlaten, gebruik de toetscombinatie CTRL+C
.

wait
and Tail
parameters with Get-Content
.Het teruggeven van de resultaten als een enkele string
Je hebt misschien gemerkt dat je in eerdere voorbeelden te maken had met stringarrays als de uitvoer van PowerShell’s Get-Content
. En zoals je tot nu toe hebt geleerd, stelt de aard van arrays je in staat om op de inhoud één item per keer te werken.
Arrays werken vaak goed, maar het kan moeilijker zijn om strings te vervangen. De Raw
-parameter van Get-Content
leest de volledige inhoud van een bestand in als een enkel stringobject. Hoewel de code hieronder hetzelfde is als die gebruikt in het eerste voorbeeld, slaat de Raw
-parameter de bestandsinhoud op als een enkele string.
De onderstaande schermafbeelding toont aan dat het toevoegen van de Raw
-parameter aan Get-Content
resulteert in het behandelen van de inhoud als een enkele string en niet als een array van objecten.

Raw
parameter of Get-Content
reads the file content as a single string object.Zodra je de inhoud van een bestand in een enkele string hebt met behulp van de Raw
-parameter, wat kun je er dan mee doen? Misschien moet je een string vinden en vervangen in de inhoud van dat bestand. In het onderstaande voorbeeld leest Get-Content
de inhoud van een bestand als een enkele string. Vervolgens wordt met behulp van de replace
-operator een specifiek woord vervangen door een ander.
Gerelateerd: Strings vinden en vervangen

replace
operator.Lees alleen inhoud uit bestanden die overeenkomen met een filter
Heb je een map vol met bestanden, maar moet je alleen de inhoud van een paar specifieke lezen? Met PowerShell Get-Content
, hoef je de bestanden niet apart te filteren voordat je de inhoud leest. De Filter
-parameter van Get-Content
beperkt welke bestanden de cmdlet leest.
Om te demonstreren hoe je alleen de inhoud van specifieke bestanden leest, maak eerst een paar bestanden om te lezen. Zoals hieronder getoond, maak de bestanden in je werkmap met behulp van Add-Content
.

.log
files using Add-Content
.Met je testbestanden gemaakt, gebruik de Filter
– en Path
-parameters om alleen .log
-bestanden in de hoofdmap te lezen. Het gebruikte asterisk in de filterdefinitie geeft aan Get-Content
om elk bestand met de extensie .log
te lezen. Het eindasterisk van de padparameter beperkt het lezen van bestanden tot alleen de hoofdmap.
Zoals te zien is in de onderstaande output, wordt alleen de inhoud van de .log
-bestanden weergegeven.

Filter
parameter with PowerShell Get-Content
to limit the read files.Gerelateerd: Get-ChildItem: Bestanden, Register, Certificaten en Meer als Eén Lijst
Het lezen van de Alternatieve Gegevensstroom van een Bestand
Tot nu toe heb je uitsluitend met tekstbestanden gewerkt, maar Get-Content
kan gegevens lezen van de alternatieve gegevensstroom (ADS) van een bestand. Voel je vrij om meer te lezen over streams, maar je kunt een stream zien als een andere gegevensattribuut dat naast de typische bestandsinhoud wordt opgeslagen.
Alternatieve gegevensstromen zijn een kenmerk van het Windows NTFS-bestandssysteem, daarom is dit niet van toepassing op
Get-Content
wanneer het wordt gebruikt met niet-Windows besturingssystemen.
Je kunt alternatieve gegevensstromen zien door Get-Item
uit te voeren met de Stream
-parameter. Bij het verwijzen naar een bestand met behulp van de Stream
-parameter, retourneert Get-Item
een eigenschap genaamd Stream
zoals hieronder weergegeven. Deze standaard bestandsinhoudsstroom wordt weergegeven met :$DATA
.
Om de standaard :$DATA
stroom te demonstreren, gebruik de Get-Item
cmdlet om alle beschikbare streams in het bestand fruits.txt weer te geven. Zoals hieronder getoond, toont Get-Item
een enkele stream.

Get-Item
.De Stream
-parameter van Get-Content
leest expliciet de inhoud van de standaard :$DATA
stroom zoals hieronder weergegeven. De teruggegeven inhoud is hetzelfde als de standaarduitvoer van Get-Content
, omdat de :$DATA
stroom standaard wordt gelezen.

:$DATA
stream using Get-Content
.Om het ophalen van een alternatieve gegevensstroom te demonstreren met Get-Content
, wijzig een bestand met Add-Content
om de nieuwe stroom toe te voegen. Gebruik Get-Item
om de nieuwe stroom naast de standaard :$DATA
stroom te tonen, zoals te zien is in het onderstaande voorbeeld.

Omdat alleen de :$DATA
stroom standaard wordt gelezen, gebruik de Stream
-parameter van Get-Content
om de nieuwe Secret
-stroominhoud op te halen. Zoals hieronder getoond, wordt de inhoud van de Secret
-stroom weergegeven in plaats van de standaard bestandsinhoud.

Get-Content
to read the Secret
alternate data stream content.Volgende stappen met PowerShell Get-Content
In dit artikel heb je veel manieren geleerd om Get-Content
te gebruiken om inhoud te lezen en te manipuleren. Je hebt zelfs geleerd dat Get-Content
flexibel genoeg is om inhoud te lezen uit alternatieve gegevensstromen!
Met wat je in dit artikel hebt geleerd, op welke andere manieren kun je Get-Content
gebruiken in je werk? Misschien kun je Get-Content
gebruiken om te bepalen of een back-upbestand verouderd is en automatisch een oproep doen om een back-uptaak uit te voeren?
Source:
https://adamtheautomator.com/powershell-get-content/