Я пытаюсь использовать .net API для поиска большого файла данных.По какой-то причине я не могу заставить его работать.Вот мой код:
function check_logs{
$pos = 8192
$count = 1
$path = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG.2'
$br = 0
$reader = [System.IO.File]::OpenText($path)
$reader.DiscardBufferedData()
$reader.BaseStream.Seek(0, [System.IO.SeekOrigin]::Begin)
for(;;){
$line = $reader.ReadLine()
if($line -ne $null){$br = $br + [System.Text.Encoding]::UTF8.GetByteCount($line)}
if($line -eq $null -and $count -eq 0){break}
if($line -eq $null){$count = 0}
elseif($line.Contains(' Error:')){
Write-Host "$line $br"
}
}
}
Если я использую 0 в качестве параметра для метода поиска, он ищет с самого начала, как и ожидалось, но также записывает 0 в консоль перед этимпишет строки прочитанные.Пример:
0
2011-08-31 09:26:36.31 Logon Error: 17187, Severity: 16, State: 1. 4101
2011-08-31 09:26:36.32 Logon Error: 17187, Severity: 16, State: 1. 4489
2011-08-31 09:26:38.25 Logon Error: 17187, Severity: 16, State: 1. 4929
2011-08-31 09:26:38.25 Logon Error: 17187, Severity: 16, State: 1. 5304
2011-08-31 09:26:43.75 Logon Error: 17187, Severity: 16, State: 1. 6120
Если я попытаюсь искать, используя 4096 вместо 0, он только выписывает:
4096
Я бы подумал, что он выведет те же строки, что и первыйделал отдельно от первых двух.
Может кто-нибудь увидеть проблему?У меня был еще один вопрос, который привел меня к этому.Для получения дополнительной информации см. это
РЕДАКТИРОВАТЬ: Все еще пытаюсь выяснить это.Кто-нибудь знает, где еще я мог бы попытаться найти информацию об этой проблеме?Можно ли отправить вопросы парню из Microsoft?
С уважением
Gísli