我正在尝试使用 .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 作为 seek 方法的参数,它会按预期从头开始搜索,但它也会在写入读取的行之前将 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 脚本专家发送问题?
此致
吉斯利