Используйте -ContentType "application/json; charset=utf-8";
вместо.
Если это не сработает, вам также может понадобиться кодировать ваше тело в UTF8.$body = [System.Text.Encoding]::UTF8.GetBytes($body);
Полный пример
$params = @{
title = $Title
content = $Content # "foobar" would work just fine;
# "?äöü" will give me an error
}
$Body = $params | ConvertTo-Json
$Body = [System.Text.Encoding]::UTF8.GetBytes($body)
$Splat_Post= @{
ContentType = "application/json; charset=utf-8"
UseBasicParsing = $true
Method = 'POST'
Uri = "https://my.blog.foo/wp-json/v2/posts"
Headers = @{ Authorization = ("Basic {0}" -f $ACCESS_TOKEN) }
}
Invoke-RestMethod @Splat_Post-Body $Body
Примечание: я переработал код, чтобы продемонстрировать разбрызгивание .
Если вынужно каждый раз вызывать этот метод с одними и теми же параметрами, кроме body, вы можете вызывать его так: Invoke-RestMethod @Splat_Post -Body $Body
затем просто меняя $ Body на содержимое ваших желаний каждый раз.