2016-03-18 2 views
0

У меня есть несколько файлов журнала (.txt), которые создаются из приложения, добавлять новые строки текста, как это каждый второй:Синтаксический файл журнала в используется другим приложением с Powershell

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

Можете ли вы открыть «заблокированный» файл в блокноте? Можете ли вы скопировать его в другое место и работать над копией? – gms0ulman

+0

К сожалению, я не могу открыть и скопировать файл. – KILLADELPHIA

+0

Я в тупике; не знаю, куда идти оттуда. [Это] (http://stackoverflow.com/questions/4400517/how-can-i-read-a-file-even-when-getting-an-in-use-by-another-process-exception) и [ это] (http://stackoverflow.com/questions/26741191/ioexception-the-process-cannot-access-the-file-file-path-because-it-is-being) являются C# решениями проблемы; они используют библиотеку .NET, которая также доступна для PowerShell. ** Стандартная оговорка: ** не проверяйте системы контроля производства. Удачи! – gms0ulman

ответ

0

Я боюсь, что это невозможно, если файл читается и пишет, что часто он будет иметь постоянную блокировку, единственный способ доступа к нему - остановить процесс, который его использует.