Tail using PowerShell
07 Oct 2017| PowerShell
Tänk på ett scenario där du diagnostiserar ett problem på en produktionsserver. Du har aktiverat loggarna och fått allt inställt för att reproducera problemet. Köar utlösaren för att åberopa den felande operationen och väntar slutligen på att loggfilen ska uppdateras.
Att stirra på att loggfilens storlek ändras är inte roligt och det är inte heller att uppdatera filen med jämna mellanrum. Jag vill bli underrättad när loggfilen uppdateras i realtid. Det är precis vad ett program som tail
gör – det övervakar filen för ändringar och matar ut svansen i filen.
Det finns några inkarnationer av svansen där ute som gör jobbet alldeles utmärkt, men med tanke på att det här var en produktionsmiljö var jag inte hålla mig till att installera nya verktyg.
Troligt nog har Get-Content
PowerShell-cmdletten den här funktionaliteten inbyggd. Detta är kombinationen som jag slutligen bestämde mig för:
Get-Content log.txt -tail 5 -wait
Argumentet -tail
tar in antalet rader som ska visas från slutet av filen och -wait
anger att den ska fortsätta att övervaka filen.
Det är sant att den här metoden inte har markeringsmöjligheter som ett dedikerat verktyg skulle ha, men det är ett ganska användbart alternativ att ha i en nödsituation.
Slutligt kan du spara några tangenttryckningar genom att använda aliaset:
cat log.txt -tail 5 -wait
Uppdatering 2019-01-30: Jag hade nyligen ett behov av att övervaka en fil för viss text och sedan notera tidsstämpeln för när den skrevs. Det bygger på detta förslag till lösning:
cat .\processed-users.txt -tail 5 -wait | ? { $_ -like ‘SEARCH_STRING_HERE’ } | % { Write-Host $(Get-Date -Format T) -noNewLine -ForegroundColor Blue; Write-Host ” $_” }