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

RJ.*_*RJ. 4 .net c# asp.net powershell exchange-server

我有一个应用程序,用于在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();
Run Code Online (Sandbox Code Playgroud)

到目前为止,此代码在所有情况下都非常完美 我试图运行的脚本而不是上面的脚本是为邮箱设置RetentionPolicy.我试图运行的脚本如下所示:

Set-Mailbox -Identity'rj'-RetentionPolicy'主要校园保留政策'

当我在powershell中运行它时,它运行得很好但是当我尝试使用下面的代码运行它时,我得到错误,"无法调用此函数,因为当前主机没有实现它."

从这个错误中,几乎看起来在C#中运行的命令无法运行RetentionPolicy命令,但这没有多大意义.我用谷歌搜索了所有的建议,但没有运气.

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

Jay*_*kul 11

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

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