gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:30:40 25 4
gpt4 key购买 nike

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

$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 : The request failed with HTTP status 401: Unauthorized.


当我使用 e 捕获流量时。 G。 Fiddler,我看到了 New-WebServiceProxy cmdlet 将凭据添加为具有 的基本授权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 中的样子:
String in UTF8
所以看起来 PowerShell 将变音符号编码为 ANSI 字符串。当我手动对凭据进行 base64 编码( dXNlckBkYjphYsOcMzEyIQ== 而不是 dXNlckBkYjphYtwzMTIh )并回复 fiddler 请求时,我得到了所需的响应。
不幸的是,我无法使用此解决方法,因为 New-WebServiceProxy不允许我自己添加 Authorization header 。
有任何想法吗?

最佳答案

已链接 answer from mklement0引导我找到解决方案:
该脚本是使用 PowerShell ISE 编写和保存的。我刚刚意识到 ISE 正在使用 保存文件带 BOM 的 UTF-8 编码。如果我将编码更改为 UTF-8 一切正常。
这是将文件编码更改为 UTF-8 的简短脚本:

$scriptPath = "c:/path/to/script.ps1"
$content = Get-Content -Raw $scriptPath
[System.IO.File]::WriteAllLines($scriptPath, $content, (New-Object System.Text.UTF8Encoding))

关于powershell - 在 New-WebServiceProxy 中包含德语变音的 PSCredential,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67300788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com