PowerShell の場合、内部は UTF-16 なので、UTF-8 に変換してリクエストを投げる必要がある。
ネットで調べても正しい情報が見つからなかったが、いくつか試行錯誤の結果わかった。
ConvertTo-Json した後、[System.Text.Encoding]::UTF8.GetBytes で変換すればよい。
$output = 何かの処理の結果の配列など
$webhook = "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX"
$message = $output -join "`n"
$payload = @{
channel = "#random";
text = $message;
}
$json = ConvertTo-Json $payload
$body = [System.Text.Encoding]::UTF8.GetBytes($json)
Invoke-RestMethod -Uri $webhook -Method Post -Body $body