1

我想通过 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 传入的这个用户的用户名和密码。

有什么想法吗?

4

1 回答 1

0

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

  1. 检查凭证的用户名、域名和密码
  2. 将新的 PSCredential(username, password) 替换为 PSCredential.Empty,它将使用当前用户的凭据,然后以与 powershell 相同的用户身份运行程序

也许您可以提供有关错误消息的更多信息。

于 2012-10-29T14:51:05.357 回答