Как мониторить появление новых строк в файле в PowerShell


Как настроить уведомления по появлении новых строк в файле

Если вам нужно наблюдать за логами (журналами) в которых появляются новые строки, то в Windows имеется удобный инструмент для этого. Вам не нужно ничего дополнительно устанавливать или настраивать — всё необходимое уже имеется на всех актуальных версиях Windows.

Следить за появлением новых строк в файле можно с помощью командлета PowerShell. Если запустить командлет Get-Content с опцией -Wait, то будет выведено имеющееся содержимое файла, но командлет не прекратит свою работу. Опция -Wait заставляет командлет ждать неопределённое время, оставляя файл открытым, пока выполнение команды не будет прервано. Во время ожидания Get-Content проверяет файл раз в секунду и выводит новые строки, если они есть.

Синтаксис запуска Get-Content для мониторинга изменений файла:

Get-Content FILE -Wait

В следующем примере будет показано содержимое файла access.log, который находится в папке C:\Server\bin\Apache24\logs\, после этого программа продолжит работу и будет выводить новые добавляемые строки:

Get-Content C:\Server\bin\Apache24\logs\access.log -Wait

Смотрите также: Как в PowerShell прочитать содержимое файла. Как сохранить содержимое файла в переменную


При удалении любой строки из файла весь файл выводится заново.

При использовании с параметром -TotalCount командлет Get-Content ожидает, пока указанное количество строк не станет доступным в указанном файле. Например, если вы укажете -TotalCount, равный 10, и файл уже содержит 10 или более строк, Get-Content вернёт 10 строк и завершит работу. Если в файле менее 10 строк, Get-Content выводит каждую строку по мере её поступления, но перед выходом ждёт, пока не появится десятая строка.

Вы можете прервать -Wait, нажав Ctrl+C. Удаление файла вызывает ошибку, которая также прерывает выполнение командлета.


Как мониторить появление новых записей сразу в нескольких файлах

В качестве опции Get-Content можно указать несколько файлов через запятую, например:

Get-Content FILE1,FILE2,FILE3,FILE4 -Wait

Но с опцией -Wait данная команда не будет работать так, как вы ожидаете — на экран будет выводится только содержимое первого файла. В целом это похоже на баг.

Тем не менее, вы можете добиться аналогичного результата — мониторинг нескольких файлов журналов — для этого просто откройте несколько терминалов и запустите в каждом из них Get-Content с указанием интересующего вас файла, например:

Get-Content FILE1 -Wait
Get-Content FILE2 -Wait

Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *