当用户名包含“@”字符时,New-WebServiceProxy Authentification失败

时间:2016-03-07 08:11:45

标签: powershell soap-client

我正在尝试使用New-WebServiceProxy cmdlet创建一个SOAP服务的代理,其用户名包含@个字符:

$webAddr = 'https://MYSERVER?wsdl'
$secpasswd = ConvertTo-SecureString "MYPASSWORD" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("USER@NAME", $secpasswd)

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$proxy = New-WebServiceProxy -Uri $webAddr -Credential $mycreds

不知何故,这不起作用,我收到以下错误:

  

New-WebServiceProxy:请求失败,HTTP状态为401:   认证失败!。

当我使用带有没有“@”字符的用户名的相同代码时,代理会被创建并且工作正常。当我在Visual Studio中添加服务引用或使用浏览器时,我还能够使用包含@字符和C#的用户名连接到服务器。

我已尝试使用System.Uri.EscapeUriString()System.Web.HttpUtility.UrlPathEncode()转义用户名但未成功。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

好的,如果你告诉它没有域名,它会认为@是用户名的一部分:

$mycreds = New-Object System.Management.Automation.PSCredential ("\USER@NAME", $secpasswd)

添加\就可以了。