PowerShellを使ってサーバにUTF8のJSONデータを送りつける


PowerShellを使ってLog InsightサーバにJSONデータを送りつけたのだが、日本語が正常に認識されない。
JSONデータ変換後のデータに対して「[System.Text.Encoding]::UTF8.GetBytes」のエンコードをしてやることで、UTF8のデータとして認識させることができる。

$loginsightserver = "IPアドレス"
$loginsightagentID = "34859a98"

$result="ジョブの結果"
$jobid = [ordered]@{
			name = "jobid"
			content = "ジョブのID"
			}
$appid = [ordered]@{
			name = "appid"
			content = "アプリのID"
			}

$fields = @($jobid,$appid)
$restcall = @{
			 messages =    ([Object[]]($messages = [ordered]@{
					text = $result
					fields = ([Object[]]$fields)
					}))
			} |convertto-json -Depth 4
$encodedrestcall= [System.Text.Encoding]::UTF8.GetBytes($restcall)
Write-Host $restcall
$resturl = ("http://" + $loginsightserver + ":9000/api/v1/messages/ingest/" + $loginsightagentID)
write-host ("Posting results to Log Insight server: " + $loginsightserver)
try
{
	$response = Invoke-RestMethod $resturl -Method Post -Body $encodedrestcall -ContentType 'application/json' -ErrorAction stop
	write-host "REST Call to Log Insight server successful"
	write-host $response
}
catch
{
	write-host "REST Call failed to Log Insight server"
	write-host $error[0]
	write-host $resturl
}

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>