我有一个运行的脚本镜像两个目录,并更新一个日志文件,告诉我们两个目录之间发生了什么。我想解析这个日志文件,以便在它们进入时获取更新(当脚本运行时),我希望这些文件向我发送一条已发生变化的电子邮件,如通知。另外 - 如果可能的话,我不想多次获得有关同一信息的通知?
我不确定在线阅读一些命令列表之后我会怎么做。
Tldr; 我真正希望做的就是在日志文件中添加一行,解析文件以获取更新的行,而不会获得任何其他行。
PowerShell并不是那么强大,所以任何帮助都会非常感激。
答案 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进程),这使得在交互式提示中使用它比在脚本中更好。