【发布时间】:2013-10-16 18:56:23
【问题描述】:
我正在尝试在未安装 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 模块导入我的运行空间。我找到了各种解决方案,但都是部分的。有些人告诉我使用RunspaceConfiguration 添加Exchange 2010 管理单元,但RunspaceFactory.CreateRunspace 没有重载接受RunspaceConfiguration 并且还允许我传递WSManConnectionInfo 以连接到远程主机。
另一种解决方案是调用AddScript 而不是AddCommand,这似乎不会引发异常,但在没有告诉我原因的情况下似乎也没有做任何事情。我宁愿工作相对强类型(使用 AddCommand)而不是传入随机字符串。
还有其他不涉及在本地机器上安装模块的方法吗?或者,除此之外,如何在本地安装 Exchange 2010 cmdlet?
【问题讨论】:
-
你的连接URi是什么?
-
https://my.exchange.server/Powershell,我将“schemas.microsoft.com/powershell/Microsoft.Exchange”作为 ShellUri 传递。 Exchange 是否公开了公开 Exchange cmdlet 的不同终结点?
标签: c# powershell exchange-server-2010