powershell在更新时解析日志文件

时间:2016-06-07 02:39:22

标签: powershell text-parsing robocopy

我有一个运行的脚本镜像两个目录,并更新一个日志文件,告诉我们两个目录之间发生了什么。我想解析这个日志文件,以便在它们进入时获取更新(当脚本运行时),我希望这些文件向我发送一条已发生变化的电子邮件,如通知。另外 - 如果可能的话,我不想多次获得有关同一信息的通知?

我不确定在线阅读一些命令列表之后我会怎么做。

Tldr; 我真正希望做的就是在日志文件中添加一行,解析文件以获取更新的行,而不会获得任何其他行。

PowerShell并不是那么强大,所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

您可以让PowerShell通过将-Wait参数传递给Get-Content来获取每个新行。然后,您可以将其传递到Foreach-Object脚本块以执行您需要的任何操作。

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

-Tail N参数导致Get-Content仅获取最后N行;在这种情况下为零。这会导致它跳过文件中已有的所有内容,并只将新添加的行传递给脚本块。

注意:此cmdlet将继续运行,直到您使用Ctrl + C取消它(或以其他方式停止其PowerShell进程),这使得在交互式提示中使用它比在脚本中更好。