我有一个脚本,它读取位于不同位置的一系列日志文件,并使用Select-String查找错误代码。在错误代码之后,我使用" -Context"将接下来的四行打印到文件中。该文件的内容将被转储到电子邮件中并发送出去。
$logsToCheck = "F:\Log1.log",
"F:\log2.log",
"F:\log3.log"
$logsToCheck | % {Select-String -Path $_ -Pattern "SQLCODE:2627" -Context
0, 4} | Out-File $dupChkFile
$emailbody = Get-Content $dupChkFile | ConvertTo-Html
字符串的实际输出格式不正确并且一起运行。有没有办法在使用Select-String -Context?
时在最后一行之后添加空行或空格最初我将$ emailbody管道输出到Out-String但是将其更改为HTML以尝试清除格式。
答案 0 :(得分:1)
尝试分别读出匹配和上下文。
Select-String -Path $_ "SQLCODE:2627" -Context 0,2 | %{
$_.Line
$_.Context.PostContext
"-----Separator-----"
}
Select-String
的{{1}}的默认输出是人类可读修改的,这将返回所有未修改的字符串数组,因此您可以确定始终会有换行符,并且它会表现出来更好地使用其他cmdlt,包括Context
或循环。
答案 1 :(得分:0)
我建议使用连接:
% { "$(Select-String -Path $_ -Pattern 'SQLCODE:2627' -Context 0, 4)`r`n" } |
Out-File $dupChkFile -Append