我正在运行一个脚本,该脚本镜像两个目录并更新有关两个目录之间发生的情况的日志文件。我想解析此日志文件以获取更新(在脚本运行时),并且我希望这些文件向我发送一封有关已更改内容的电子邮件,例如通知。另外 - 如果可能的话,我不想多次收到有关同一信息的通知?
在阅读了一些在线命令列表后,我不确定如何执行此操作。
Tldr; 我真正想做的就是当一行添加到日志文件时,解析文件以获取更新的行,而不获取任何其他行。
PowerShell 的功能并不强大,因此我们将不胜感激。
最佳答案
通过将 -Wait
参数传递给 Get-Content
,您可以让 PowerShell 获取每个新行。然后,您可以将其传递到 Foreach-Object
脚本 block 中以执行您需要的任何操作。
Get-Content $logfile -Tail 0 -Wait | foreach {
"Another line was added: " + $_
}
-Tail N
参数导致 Get-Content
仅获取最后 N 行;在这种情况下为零。这会导致它跳过文件中已有的所有内容,只将新添加的行传递到脚本 block 。
注意:此 cmdlet 将继续运行,直到您使用 Ctrl+C 取消它(或以其他方式停止其 PowerShell 进程),这使得它更适合在交互式提示中使用,而不是在脚本中使用。
关于powershell 更新时解析日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669654/