2016-06-07 6 views
1

У меня есть скрипт, который отражает два каталога и обновляет файл журнала о том, что происходит между двумя каталогами. Я хочу проанализировать этот файл журнала, чтобы получать обновления по мере их поступления (во время работы скрипта), и я хочу, чтобы они отправили мне электронное письмо о том, что изменилось, например уведомление. Кроме того - я не хочу получать уведомления о том же фрагменте информации более одного раза, если это возможно?Файл журнала синтаксического анализа powershell при обновлении

Я не уверен, как я буду заниматься этим после прочтения некоторых списков команд в Интернете.

Tldr; Действительно, все, что я хочу сделать, это когда строка добавляется в файл журнала, анализируйте файл, чтобы получить обновленную строку, не получая ни одной из других строк.

Не все, что сильно с PowerShell, поэтому любая помощь будет принята с благодарностью.

ответ

2

Вы можете получить PowerShell каждую новую линию, поскольку она входит, передавая параметр -Wait в Get-Content. Затем вы можете передать это в блок сценариев Foreach-Object, чтобы выполнить любую операцию, в которой вы нуждаетесь.

Get-Content $logfile -Tail 0 -Wait | foreach { 
    "Another line was added: " + $_ 
} 

-Tail N аргумент вызывает Get-Content только получить последние N строк; в этом случае нуль. Это заставляет его пропускать все, что уже есть в файле, и передавать только новые строки в блок сценариев.

Примечание: Это командлет будет продолжаться до тех пор, пока вы не отмените его с помощью Ctrl + C (или иначе остановите его процесс PowerShell), что значительно улучшит его использование в интерактивном приглашении, чем в скрипте.

+0

Большое спасибо, что я искал возраста для этого! могу ли я передать сценарий электронной почты в foreach, чтобы заставить его отправлять каждую новую строку себе? то это будет посылать по электронной почте каждую строку, поскольку она исходит прямо? Еще раз спасибо! :) – flanelman

+0

Вы должны вводить команды внутри блока 'foreach {...}'. Внутри этого блока переменная '$ _' содержит полную строку, которая была добавлена. –

+0

поэтому я должен написать «$ _»? как тело, так как оно содержит линию? :) – flanelman

 Смежные вопросы

  • Нет связанных вопросов^_^