首页 > 解决方案 > 如何使用 REST API 的 powershell 对德语字符(如 ü)进行编码?

问题描述

我通过将从 AD 收集的数据发布到启用了 REST API 的门户网站来从 PowerShell 脚本创建用户,使用:

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

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

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

如果名称中没有德语字母,则一切正常并创建用户。当有德语字符时,我得到 400 : Bad Request response from server。

我可以通过设置编码以某种方式改变 Invoke-RestMethod 的行为,或者它的服务器可能配置为不接收 de 字符吗?

标签: restpowershell

解决方案


这类似于这个问题。

正如@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))

推荐阅读