Exchange脚本远程执行 - Exchange&通用PS Cmdlet

时间:2014-01-24 08:45:12

标签: c# exchange-server powershell-v2.0

尝试对远程Exchange服务器执行powershell脚本文件。脚本文件包含几个交换cmdlet,以及一些write-host语句和自定义对象定义。

代码::

        SecureString securePassword = new SecureString();
        foreach (char x in Password)
            securePassword.AppendChar(x);
        PSCredential credentials = new PSCredential(UserID, securePassword);
        var connectionInfo = new WSManConnectionInfo(new Uri("http://   exchangeserver:5985/wsman"), 
              "http://schemas.microsoft.com/powershell/Microsoft.PowerShell", credentials);
        connectionInfo.AuthenticationMechanism = script.AuthenticationMode;
        powerShellEngine.Runspace = RunspaceFactory.CreateRunspace(host, connectionInfo);
        powerShellEngine.Runspace.Open();
        powerShellEngine.AddScript("Content of PS1 file goes here");

        //Some parameter addition goes here..

        var results = powerShellEngine.Invoke();

到目前为止,我已尝试过以下选项:

连接到端点:exchangeserver:5985 / wsman

  • 连接到上述端点时,Exchange cmdlet不可用。试图连接到Exchange服务器并导入会话作为我的脚本文件中的第一行:

    $ Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http:// EXCHANGESERVER / PowerShell / -Authentication Kerberos

    Import-PSSession $ Session

    导致以下错误:

    使用Kerberos身份验证时发生以下错误:指定的登录会话不存在。它可能已经被终止了。

    这是由于Kerberos双跳问题吗?此代码从控制台应用程序执行..

  • 尝试使用Add-PSSNapin cmdlet导入PS Snapin作为脚本中的第一行。这失败了。

  • 尝试执行交换ps1脚本,因为交换shell执行..

    C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer exchangeserver

    没有回复..代码挂了很长时间。

连接到端点:exchangeserver / Powershell

  • 只有交换cmdlet是可执行的。 Powershell虚拟目录锁定对所有通用PS cmdlet的访问。

有人会抛出任何可能的解决方法吗?

注意:可以绕过RBAC检查,因为这将由管理员帐户执行。我们可以在不连接到交换服务器的情况下将交换cmdlet加载到正常的PS会话吗?

0 个答案:

没有答案