针对Exchange的远程Runspace连接失败

时间:2012-10-29 12:31:19

标签: powershell exchange-server runspace winrm

我想通过C#远程向Exchange服务器发出命令。当我直接通过PowerShell执行此操作时,它可以正常工作。但是当我通过C#向PowerShell发出命令时,它失败了。

以下是我在PowerShell中所做的事情(有效):

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ExchangeFQDN/PowerShell/ -Authentication Kerberos
Import-PSSession $Session
Enable-Mailbox -Identity "SomeIdentity" -Shared

这是C#(不起作用):

var connectionInfo = new WSManConnectionInfo(
    new Uri("http://ExchangeFQDN/PowerShell/"),
    "http://schemas.microsoft.com/powershell/Microsoft.Exchange", 
    new PSCredential(username, password));
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;

//Next line throws a PSInvalidOperationException
using (var runspace = RunspaceFactory.CreateRunspace(connectionInfo)) //<- fails
{
    //Execute Enable-Mailbox command 
}

我有一个特定用户有权进行此远程登录。 PowerShell以此用户身份运行,而用户则在C#代码中模拟。它也是我用作PSCredential传递的用户的用户名和密码。

对什么是错的任何想法?

1 个答案:

答案 0 :(得分:0)

尝试以下两种可能的解决方案:

  1. 检查凭证的用户名,域名和密码
  2. 用PSCredential.Empty替换新的PSCredential(用户名,密码),PSCredential.Empty将使用当前用户的凭据,然后以与PowerShell相同的用户身份运行程序
  3. 也许您可以提供有关错误消息的更多信息。