0

我需要使用 C# 和 Powershell 连接到 Exchange 2010 服务器。Exchange 2007 文档希望我添加一个管理单元

  RunspaceConfiguration rsConfig = RunspaceConfiguration.Create();
  PSSnapInException snapInException = null;
  PSSnapInInfo info = rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapInException);
  Runspace myRunSpace = RunspaceFactory.CreateRunspace(rsConfig);
  myRunSpace.Open(rsConfig);

网上的其他样例要我这样用WSMan

        WSManConnectionInfo connectionInfo = new WSManConnectionInfo(false, "ExchangeServer.ibm.com", 80, "/Powershell", "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential);

所以我的问题是:

  • 这些技术之间的有效区别是什么?

  • 它们可以互换吗?

4

2 回答 2

1

在 Exchange 2007 中,您使用本地运行空间中的管理管理单元来运行 cmdlet。所有更改都是根据​​您的凭据进行的。

在 Exchange 2010 中,情况发生了变化。维护是通过 Exchange 服务器提供的远程会话完成的。实际更改由 Exchange 服务器使用代理帐户代表您完成,Exchange 会根据您所属的 RBAC 角色确定您是否有权进行这些更改。更改记录在管理员审核日志中。

Exchange 2010 有一个管理单元,但 MS 不支持通过将其添加到本地会话中来使用它,并且并非所有 cmdlet 在该环境中都能正常工作。大多数 cmdlet 都可以工作,但它会绕过 RBAC,并且在该环境中所做的任何更改都不会记录到管理员审核日志中。

于 2012-02-12T17:08:10.767 回答
0

您的第一个示例只是在不使用 WS-MAN 的本地系统上实例化一个新的运行空间。第二部分是利用 WS-MAN 服务,这要求您提前在将要连接的所有系统上配置它。

老实说,如果您不需要使用 WS-MAN 连接到远程系统,我会避免使用它并使用 Exchange 团队推荐的做法。WS-MAN 的设置和使用(阅读:可以)相当简单,但它增加了一层可能根本不必要的复杂性,并导致额外的故障排除问题。

于 2012-02-11T02:55:24.350 回答