在New-WebServiceProxy中包含德语变音的PSCredential

我尝试PSCredential使用包含德语变音符号的密码创建一个对象,并将其传递给New-WebServiceProxycmdlet。只要密码不包含以下示例中的任何变音符号,代码就会按预期工作:

$secp = ConvertTo-SecureString 'abÜ312!' -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential('user@db', $secp)
$proxy = New-WebServiceProxy -Uri "https://example.com/webservice/myWs?wsdl" -Credential $mycreds

在这种情况下,我收到以下错误消息:

New-WebServiceProxy :请求失败,HTTP 状态为 401:未经授权。

当我使用例如 Fiddler 捕获流量时,我看到New-WebServiceProxycmdlet 将凭据添加为具有base64编码的基本授权

GET https://example.com/webservice/myWs?wsdl HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)
Authorization: Basic dXNlckBkYjphYtwzMTIh
Host: example.com

这是解码后的 Base64 字符串在 Utf8 中的样子:

所以看起来 PowerShell 正在将元音符号编码为ANSI字符串。当我手动对凭据(dXNlckBkYjphYsOcMzEyIQ==而不是dXNlckBkYjphYtwzMTIh)进行 base64 编码并回复提琴手请求时,我得到了所需的响应。

不幸的是,我无法使用此解决方法,因为New-WebServiceProxy它不允许我自己添加 Authorization 标头。

有任何想法吗?

以上是在New-WebServiceProxy中包含德语变音的PSCredential的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>