我有一个应用程序,用于在C#代码中运行Exchange Powershell命令,如下所示。这是我用来运行powershell命令的相关行的示例。
RunspaceConfiguration rsConfig = RunspaceConfiguration.Create();
PSSnapInException snapInException = null;
//load Exchange shell
rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", out snapInException);
Runspace runSpace = RunspaceFactory.CreateRunspace(rsConfig);
//open runspace
runSpace.Open();
//setup pipeline
Pipeline pipeLine = runSpace.CreatePipeline();
String sScript = "get-mailbox -identity 'rj'";
//add script to pipeline
pipeLine.Commands.AddScript(sScript);
//run the script
pipeLine.Invoke();
pipeLine.Dispose();
到目前为止,此代码在所有情况下都非常完美。我试图运行的脚本而不是上面的脚本是为邮箱设置RetentionPolicy。我试图运行的脚本如下所示:
Set-Mailbox -Identity'rj'-RetentionPolicy'主要校园保留政策'
当我在powershell中运行它时,它运行得很好但是当我尝试使用下面的代码运行它时,我得到错误,“无法调用此函数,因为当前主机没有实现它。”
从这个错误中,几乎看起来在C#中运行的命令无法运行RetentionPolicy命令,但这没有多大意义。我用谷歌搜索了所有的建议,但没有运气。
如果有人知道为什么会这样,那将会非常有帮助。
答案 0 :(得分:11)
如果该命令通常会提示确认,那么您需要:
-Confirm:$false
设置为参数(也可能是-Force
)$ConfirmPreference = "None"
(也可能是-Force
)