私はインターネット履歴を取得するpowershellスクリプトを持っており、データをlogstashに送信したいと思います。このようになり、データを返すLogstashは手動改行なしでjsonデータを解析できません
function ConvertTo-logstash
{
Begin {
$result = ""
}
Process {
$result += $_ | ConvertTo-Json -Compress -Depth 1
$result += "`n"
}
end {
$result.replace("\","\\")
}
}
は:関数は、この関数にPSObjectsの配列、Iパイプを返す
{"Browser":"IE10/11","Category":"internethistory","Function":"inethistory","HostIP":"172.16.100.93","HostName":"wkst-7-2","LastVisitTime":"2016-08-01T16:27:13","Title":"","URL":"res://C:\\Windows\\system32\\mmcndmgr.dll/views.htm","User":"scrub","VisitCount":2}
{"Browser":"IE10/11","Category":"internethistory","Function":"inethistory","HostIP":"172.16.100.93","HostName":"wkst-7-2","LastVisitTime":"2016-08-02T14:33:26","Title":"","URL":"file:///C:/Users/scrub/Desktop/privEsc.ps1","User":"scrub","VisitCount":1}
{"Browser":"IE10/11","Category":"internethistory","Function":"inethistory","HostIP":"172.16.100.93","HostName":"wkst-7-2","LastVisitTime":"2016-08-15T10:24:38","Title":"","URL":"file:///C:/Users/scrub/Documents/template.pdf","User":"scrub","VisitCount":22}
...
私はこの情報をファイルに書き込み、その後、私はこのデータを送信しますソケット接続を介してログをとる。問題は、jsonが無効であり、インデックスフィールド "Category"が小文字でなければならないことを示す、このデータのログシュートです。メモ帳でファイルを開き、最初のエントリの後に改行を入れて送信すると、logstashはそれをうまく処理します。私はメモ帳に改行を入れてはやっていたことを変更、ない運があったよう
$result += "`r`n"
に
$result += "`n"
を変えてみました。 Logstashはなぜこのデータを何の理由もないとしているのですか?
編集:改行の追加は関係ありません。メモ帳で開いて変更せずに保存するだけで、エラーを修正するようです。現在のところ、ファイルのバイナリを調べてその違いを見いだしています。
おそらくそれを開いて変更して保存することは、行末の文字を変更する以上のことです。ファイルエンコーディング? ASCIIエンコーディングが期待されていて、UTF-16(たとえば)を送信している場合は、かなり問題になります。 –
データをファイルに出力する方法を教えてください –
'get-inethistory | convertto-logstash >> "$ outpath \ internethistory.log" ' – Sandles