我正在尝试在未安装 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.CreateRunspace
RunspaceConfiguration
WSManConnectionInfo
AddScript
AddCommand
是否有另一种不涉及在本地计算机上安装模块的方法?或者,除此之外,如何在本地安装 Exchange 2010 cmdlet?