在C#错误中运行powershell命令,“无法调用此函数,因为当前主机未实现它”

我有一个应用程序,用于在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命令,但这没有多大意义。 我用谷歌搜索了所有的建议,但没有运气。

如果有人知道为什么会这样,那将非常有帮助。

如果该命令通常会提示确认,那么您将需要:

  • 设置-Confirm:$false作为参数(也可能是-Force
  • 在调用Set-Mailbox之前设置$ConfirmPreference = "None" (也可能是-Force
  • 创建主机并实现确认function;-)