使用Powershell解析另一个应用程序正在使用的日志文件

时间:2016-03-18 08:27:38

标签: windows parsing powershell windows-server-2012

我有几个日志文件(.txt)是从一个应用程序生成的,每隔一秒就添加一行新的文本行:

2/20/2016 1:22:47 PM 67.8
2/20/2016 1:22:48 PM 67.8 
2/20/2016 1:22:49 PM 67.7
2/20/2016 1:22:50 PM 67.6

我的问题是我无法使用Get-Content访问该文件,因为它会抛出IO.Exception错误。我无法结束应用程序,因为它正在监视并且无法停止。我还应该提到该应用程序还每隔10分钟写入另一个日志文件,但我可以完全解析该日志文件。我甚至可以在记事本中打开活动的10分钟日志文件,没有任何问题。我猜测其他日志每秒都会更新它对文件的锁定。

这是我的1秒日志文件的解析代码:

$Log = Get-ChildItem -Path 'C:\Users\Public\App' | Where-Object {$_.Name -match "LOG"} | Sort LastWriteTime | Select -Last 1
$Number = Get-Content -Path "C:\Users\Public\App\$Log" -Tail 1 | Select-String -Pattern $regexSPL -AllMatches | % { $_.Matches } | % { $_.Groups }

以下是我在尝试解析活动的1秒日志文件时收到的错误:

Get-Content : The process cannot access the file 'C:\Users\Public\App\LOG_3_18_2016_12.26.30 AM.txt' 
because it is being used by another process.

任何帮助都将得到真诚的感谢。

1 个答案:

答案 0 :(得分:0)

我担心如果正在读取并写入文件,通常它将永久锁定它,这是不可能的,访问它的唯一方法是停止正在使用它的进程。