Running a powershell command in C# errors with, “Cannot invoke this function because the current host does not implement it”

夙愿已清 提交于 2019-12-18 06:49:34

问题


I have an application that I use to run Exchange Powershell commands inside C# code like below. This is an example of the relevant lines I use to run the powershell command.

            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();

This code works perfect in all cases until now. the script I am trying to run instead of the one above is to set the RetentionPolicy for a mailbox. The script I am trying to run looks like this:

Set-Mailbox -Identity 'rj' -RetentionPolicy 'Main Campus Retention Policy'

When I run this in powershell itself it works perfectly but when I try to run it using the code below I get the error, "Cannot invoke this function because the current host does not implement it."

From this error, it almost seems like the command that runs in C# cannot run the RetentionPolicy command but that doesn't make much sense. I have Googled this and tried everything suggested but no luck.

If anyone knows why this is happening, it would be very helpful.


回答1:


If that command would normally prompt for confirmation then you will need to either:

  • Set -Confirm:$false as a parameter (and possibly -Force as well)
  • Set $ConfirmPreference = "None" before calling Set-Mailbox (and possibly -Force too)
  • Create a Host and implement the Confirm functionality ;-)


来源:https://stackoverflow.com/questions/4219095/running-a-powershell-command-in-c-sharp-errors-with-cannot-invoke-this-functio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!