2017-08-17 11 views
0

私は別の場所にある一連のログファイルを読み込み、Select-Stringでエラーコードを探します。エラーコードの後、次の4行を "-Context"でファイルに出力します。そのファイルの内容は電子メールにダンプされて送信されます。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に変更されました。

答えて

1

は個別にマッチして、コンテキストを読み出してみてください。

Select-String -Path $_ "SQLCODE:2627" -Context 0,2 | %{ 
    $_.Line 
    $_.Context.PostContext 
    "-----Separator-----" 
} 

ContextSelect-Stringのデフォルトの出力は、人間が読める変更され、あなたは常に改行があるだろうことを確認することができますので、これは、変更されていない文字列の配列としてすべてを返し、それがcmdlt年代他とのより良い動作しますOut-Stringまたはループが含まれます。

+0

これは出力を完全に消去しますが、出力は複数のログから同時に実行されます。最後の行の後にある種のスペースや区切り文字を追加する方法はありますか?おそらく2行追加するLineNumberプロパティで何かを試してみることを考えた? – J235711

+0

@ J235711 2行目として----- {0}:{1} ----- "-f $ _。FileName、$ _。LineNumber'を挿入してください。 – LotPings

+0

@ J235711は確実に更新されています明確な線があります。 – ConnorLSW

0

私は連結を使用することをお勧めします:

% { "$(Select-String -Path $_ -Pattern 'SQLCODE:2627' -Context 0, 4)`r`n" } | 
    Out-File $dupChkFile -Append 
関連する問題