1

这是我正在使用的代码:

const string username = "domain\\user";
const string password = "password";
var credentials = new PSCredential(username, password.ToSecureString());
var connInfo = new WSManConnectionInfo(new Uri("https://server.domain.com/powershell"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credentials)
                           {AuthenticationMechanism = AuthenticationMechanism.Negotiate};

var rS = RunspaceFactory.CreateRunspace(connInfo);

rS.Open();

这是例外:

连接到远程服务器 server.domain.com 失败并显示以下错误消息: WinRM 客户端无法处理请求。服务器不支持客户端请求的身份验证机制,或者在服务配置中禁用了未加密的流量。验证服务配置中的未加密流量设置或指定服务器支持的身份验证机制之一。要使用 Kerberos,请将计算机名称指定为远程目标。还要验证客户端计算机和目标计算机是否已加入域。要使用 Basic,请将计算机名称指定为远程目标,指定 Basic 身份验证并提供用户名和密码。服务器报告的可能的身份验证机制:有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。

所以这是我的困惑。

  • 我检查了客户端计算机上的 WSMan:\localhost\Client,并确保 AllowUnencrypted 为 $true。
  • 我检查了服务器上的 WSMan:\localhost\Service 并确保 AllowUnencrypted 为 $true。
  • WSMan:\localhost\Service\Auth 也将 Negotiate 和 Kerberos 设置为 $true。

我还能检查什么来摆脱异常?

4

1 回答 1

1

我无法对此进行测试,但是在查看了MSDN BlogconnInfo上的另一个示例之后,无论您选择使用哪种凭据,您似乎都需要更新您的行以添加服务器名称。

var connInfo = new WSManConnectionInfo(new Uri("https://server.domain.com/powershell", ADD_SERVER_NAME_HERE), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credentials) { AuthenticationMechanism = AuthenticationMechanism.Negotiate };
于 2013-08-26T15:46:47.730 回答