我需要使用C#和Powershell连接到Exchange 2010服务器。 Exchange 2007文档要我to add a snap in
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);
所以我的问题是:
这些技术之间的有效区别是什么?
它们可以互换吗?
答案 0 :(得分:1)
在Exchange 2007中,您在本地运行空间中使用管理管理单元来运行cmdlet。所有更改都是在您的凭据下进行的。
在Exchange 2010中发生了变化。维护是通过Exchange服务器提供的远程会话完成的。实际更改由Exchange服务器代表您使用代理帐户完成,Exchange确定您是否有权根据您所属的RBAC角色进行更改。更改将记录在管理审核日志中。
Exchange 2010有一个管理单元,但MS不支持将其添加到本地会话中,并且并非所有cmdlet都在该环境中正常工作。大多数cmdlet都可以工作,但它会绕过RBAC,并且在该环境中所做的任何更改都不会记录到管理审核日志中。
答案 1 :(得分:0)
您的第一个示例只是在本地系统上实例化一个新的Runspace,它不使用WS-MAN。第二部分是利用WS-MAN服务,这需要您在提前连接的所有系统上配置它。
说实话,如果您不需要使用WS-MAN连接到远程系统,我会避免使用它并使用Exchange团队推荐的做法。 WS-MAN(读取:可以)设置和使用相当简单,但它增加了一层复杂性,可能根本就没有必要,并导致额外的故障排除问题。