2014-02-22 5 views
1

Когда я использую ниже скрипт ...Файл журнала с увеличением размера без каких-либо содержания

$pattern = 'Unable to create Load Balance Manager object!' 
$events = Get-WinEvent -ea SilentlyContinue ` 
-ProviderName "Hyperion Financial Data Quality Management - Task Manager Service"| 
Where-Object { $_.TimeCreated -gt [datetime]::now.AddMinutes(-15) -and $_.Message -match $pattern } 
$events |Export-Csv D:\Temp.txt -Encoding Unicode -notype 
[System.IO.File]::ReadAllText("D:\Temp.txt") | Out-File D:\Error.txt -Append -Encoding Unicode 

Я закончил получать temp.txt файл с 1 размером KB и файл error.txt с ПОВЫШЕННЫМ РАЗМЕРОМ каждый день, но без содержания внутри него.

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

Или это добавление пустых строк при каждом прогоне с интервалом 15 минут? Если это так, я могу предотвратить это. Я просто хочу убедиться, что он должен добавлять контент (в случае обнаружения ошибки), а не пустые строки в каждом прогоне, которые, похоже, довольно вводят в заблуждение.

Пожалуйста, предложите ..!

ответ

3

ReadAllText() возвращает пустую строку-объект, и так как вы используете -Append с Out-File командлета, то error.txt обновляется с этой струне пуста + в LineBreak (из-за -Append) каждый раз.

Вы можете решить эту проблему, добавив проверку, чтобы проверить, не являются ли данные из temp.txt. Это позволит удалить пустой строковый объект из конвейера до Out-File. Что-то вроде этого:

[System.IO.File]::ReadAllText("D:\Temp.txt") | ? { $_ } | Out-File D:\Error.txt -Append -Encoding 

или

[System.IO.File]::ReadAllText("D:\Temp.txt") | ? { $_ -ne "" } | Out-File D:\Error.txt -Append -Encoding 
+0

Благодаря Фрод ... его работы ..! – Sunny

 Смежные вопросы

  • Нет связанных вопросов^_^