0

我正在尝试在未安装 Exchange cmdlet 的远程计算机上运行远程 Powershell Cmdlet(Exchange 2010 的 cmdlet 之一),在我的 C# 代码中使用 Powershell 远程处理 (v2)。我有这样的事情:

var connection = new WSManConnectionInfo("http://my.exchange.srv/PowerShell", "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credentials);
var runspace = RunspaceFactory.CreateRunspace(connection);
var ps = PowerShell.Create();
ps.Runspace = runspace;
runspace.Open();
var results = ps.AddCommand("Enable-MailPublicFolder").AddArgument(folderId).Invoke();

这将返回 RemoteException:术语“Enable-MailPublicFolder 无法识别”错误。这是因为本地计算机不熟悉 Exchange Cmdlet。

但是,我不知道如何将 Exchange 模块导入我的运行空间。我找到了各种解决方案,但都是部分的。有些人告诉我使用 a添加 Exchange 2010 管理单元,但是接受 a并RunspaceConfiguration没有重载,还允许我传递 a以连接到远程主机。另一种解决方案是调用而不是,这似乎不会引发异常,但似乎也没有告诉我原因就没有做任何事情。我宁愿使用相对强类型(使用 AddCommand)而不是传入随机字符串。RunspaceFactory.CreateRunspaceRunspaceConfigurationWSManConnectionInfoAddScriptAddCommand

是否有另一种不涉及在本地计算机上安装模块的方法?或者,除此之外,如何在本地安装 Exchange 2010 cmdlet?

4

1 回答 1

1

您收到的错误通常表明您用于远程连接的帐户不是 Exchange 中必要的 RBAC 角色组的成员。

当远程会话初始化时,服务器将检查建立连接的帐户具有哪些角色,并在为该组角色成员定制的会话中创建一组代理功能。如果该帐户不属于管理公用文件夹的角色组,您将无法在会话中使用公用文件夹管理 cmdlet 的代理功能。

于 2013-10-16T10:48:16.967 回答