【问题标题】:Remote Runspace connection against Exchange fails针对 Exchange 的远程运行空间连接失败
【发布时间】:2012-10-29 12:31:19
【问题描述】:

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

有什么想法吗?

【问题讨论】:

    标签: powershell exchange-server runspace winrm


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2016-08-08
      • 2020-06-15
      • 2015-10-03
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      相关资源
      最近更新 更多