powershell 更新时解析日志文件

标签 powershell text-parsing robocopy

我正在运行一个脚本,该脚本镜像两个目录并更新有关两个目录之间发生的情况的日志文件。我想解析此日志文件以获取更新(在脚本运行时),并且我希望这些文件向我发送一封有关已更改内容的电子邮件,例如通知。另外 - 如果可能的话,我不想多次收到有关同一信息的通知?

在阅读了一些在线命令列表后,我不确定如何执行此操作。

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/

相关文章:

c - 读取 csv 文件时函数崩溃

regex - 有没有办法将文本表转换为 PowerShell 对象

batch-file - 如何防止 Robocopy 处理空的顶级目录?

powershell - 从txt追加到工作表-Powershell

powershell - Enter-PSSession 到自定义端点 : Cmdlet not recognized

python - 获取缩写和定义的程序 - 获取所有小写缩写时遇到问题

azure-devops - 找不到 VSTS Windows 机器文件副本 robocopy

c# - 如何重用具有稍微不同的 ProcessStartInfo 实例的 Process 实例?

powershell - 如何使用 Powershell 按顺序打印 PDF 文件?

sql - 无法使用带有 -InputObject 参数的 SQLPS CmdLet Backup-SQLDatabase