如何使用Powershell为REST API编码德语字符(如ü)?

时间:2019-01-11 15:24:40

标签: rest powershell

我通过使用以下方法从PowerShell脚本中创建用户:将从AD收集的数据发布到启用REST API的Web门户,

$response = Invoke-RestMethod -Method Post -Uri $url -Headers $headers -Body $body

其中$ body是JSON格式的proper有效负载,如下所示:

{
"email" : "klaus.mueller@domain.com",
"firstname" : "Klaus",
"lastname" : "Müller",
"active" : "true",
"superadmin" : "false"
}

如果名称中没有德语字母,则全部为OK。并创建用户。当出现德语字符时,我收到来自服务器的400:错误请求响应。

我是否可以通过设置编码来更改Invoke-RestMethod的行为,或者可以将其服务器配置为不接收字符?

1 个答案:

答案 0 :(得分:2)

This is similar to this question.

如@Keith Hill所说

  

PowerShell中的字符串是Unicode,但是您已经指定了UTF8编码,所以我认为您需要对UTF8有所帮助。

虽然链接的线程引用了Invoke-WebRequest,但是该编码对于Invoke-RestMethod仍然应该有效。

您的请求应如下所示

$response = Invoke-RestMethod -Method Post -Uri $url -Headers $headers -Body ([System.Text.Encoding]::UTF8.GetBytes($body))