Tail using PowerShell
07 Oct 2017| PowerShell
Neem een scenario in ogenschouw waarin u een diagnose stelt van een probleem op een productieserver. U hebt de logboeken ingeschakeld en alles ingesteld om het probleem te reproduceren. Je zet de trigger in de wachtrij om de foutieve operatie uit te voeren en wacht tot het logbestand is bijgewerkt.
Toezien hoe de grootte van het logbestand verandert, is niet leuk en het regelmatig verversen van het bestand ook niet. Ik wil een melding krijgen op het moment dat het logboek in real-time wordt bijgewerkt. Dit is precies wat een programma als tail
doet – het controleert het bestand op wijzigingen en voert de staart van het bestand uit.
Er zijn een paar incarnaties van staart die het werk prima doen, maar gezien het feit dat dit een productie-omgeving was, hield ik me niet bezig met het installeren van nieuwe tools.
Gelukkig heeft het Get-Content
PowerShell cmdlet deze functionaliteit ingebouwd. Dit is de combinatie die ik uiteindelijk heb gekozen:
Get-Content log.txt -tail 5 -wait
Het argument -tail
geeft aan hoeveel regels vanaf het einde van het bestand moeten worden weergegeven en -wait
geeft aan dat het het bestand moet blijven monitoren.
Goed dat deze methode niet de markeermogelijkheden heeft die een speciaal gereedschap zou hebben, maar het is een vrij nuttige optie om in nood te hebben.
Finitief, bespaar een paar toetsaanslagen door de alias te gebruiken:
cat log.txt -tail 5 -wait
Update 2019-01-30: Ik had onlangs de behoefte om een bestand te controleren op bepaalde tekst en vervolgens de tijdstempel te noteren van wanneer het is geschreven. Het is gebaseerd op deze voorgestelde oplossing.
cat .\processed-users.txt -tail 5 -wait | ? { $_ -like ‘SEARCH_STRING_HERE’ } | % { Write-Host $(Get-Date -Format T) -noNewLine -ForegroundColor Blue; Write-Host ” $_” }