我有一个日志文件,其中包含来自多个日志文件的多行文本。我正在尝试使用Send-MailMessage在电子邮件的正文中发送日志文件的内容。
我的问题是:我正在尝试从多个日志文件中提取一行文本Exception
。我想在if语句中匹配它。我已经尝试过以下脚本,但是没有运气。任何见识将不胜感激。
日志文件内容:
25/Dec/2018 11:50:05.224 ERROR 3805 com.crm.dao.CrmDaoJdbcImpl(L:608) - Exception created
Rerun the transaction.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1522)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
提取所需的输出后:
25/Dec/2018 11:50:05.224 ERROR 3805 com.crm.dao.CrmDaoJdbcImpl(L:608) - Exception created
这是脚本的摘录供参考。
$SourceDir = "C:\Temp\TEMP2"
#$GCI_Fiter = '*.txt'
$Include=@("*.log","*.txt")
$FileList = Get-ChildItem -LiteralPath $SourceDir -Include "$Include" -File
foreach ($FL_Item in $FileList) {
$FLI_Content = Get-Content -LiteralPath $FL_Item.FullName -Raw
if ( ???????? ) {
$ExceptionLines = $FLI_Content | Select-String -SimpleMatch 'Exception' | ForEach-Object {$_.ToString().Trim()}
$ExceptionLines
}
else {
Write-Warning "Could not find Exception keyword from '$FL_Item.FullName'.."
}
}
预先感谢
答案 0 :(得分:1)
查找包含单词“ Exception”的所有行:
Get-Content -Path $file.FullName | Select-String "Exception"
如果要测试是否有包含“ Exception”一词的行,那么就像将上述命令的结果分配给变量并测试值一样简单!
$results = Get-Content -Path $file.FullName | Select-String "Exception"
if ($results) {
Write-Output "Exception found"
}
else {
Write-Output "No exception found"
}