Tail using PowerShell
07 Oct 2017| PowerShell
Considera uno scenario in cui stai diagnosticando un problema su un server di produzione. Hai abilitato i log e hai tutto impostato per riprodurre il problema. Mettete in coda il trigger per invocare l’operazione difettosa e infine aspettate che il file di log si aggiorni.
Stare a guardare la dimensione del file di log che cambia non è divertente, né lo è aggiornare periodicamente il file. Voglio essere avvisato nel momento in cui il log viene aggiornato in tempo reale. Questo è esattamente ciò che fa un programma come tail
– monitora il file per i cambiamenti ed emette la coda del file.
Ci sono alcune incarnazioni di coda là fuori che fanno il lavoro perfettamente bene, ma dato che questo era un ambiente di produzione non ero preoccupato di installare nuovi strumenti.
Per fortuna, il cmdlet Get-Content
PowerShell ha questa funzionalità integrata. Questa è la combinazione su cui alla fine ho deciso:
Get-Content log.txt -tail 5 -wait
L’argomento -tail
prende il numero di linee da mostrare dalla fine del file e -wait
specifica che dovrebbe continuare a monitorare il file.
Concesso che questo metodo non ha le capacità di evidenziazione che avrebbe uno strumento dedicato, ma è un’opzione abbastanza utile da avere in un pizzico.
Infine, risparmia qualche colpo di chiave usando l’alias:
cat log.txt -tail 5 -wait
Aggiornamento 2019-01-30: Recentemente ho avuto l’esigenza di monitorare un file per un certo testo e poi notare il timestamp di quando è stato scritto. Si basa su questa soluzione suggerita.
cat .\processed-users.txt -tail 5 -wait | ? { $_ -like ‘SEARCH_STRING_HERE’ } | % { Write-Host $(Get-Date -Format T) -noNewLine -ForegroundColor Blue; Write-Host ” $_” }