【问题标题】:Running a powershell command in C# errors with, "Cannot invoke this function because the current host does not implement it"在 C# 中运行 powershell 命令错误,“无法调用此函数,因为当前主机未实现它”
【发布时间】:2011-05-12 06:29:52
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net asp.net powershell exchange-server


    【解决方案1】:

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

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

    【讨论】:

    • 你用 -Force 搞定了。一旦我添加了它,它就完美了。感谢您的帮助,完成了这些要求。太棒了!
    • @Kiquenet,我相信简单的答案就是将他正在执行的 sScript 设置为:Set-Mailbox -Identity 'rj' -RetentionPolicy 'Main Campus Retention Policy' -Confirm:$false -Force
    • 有趣。我将尝试 -Force 方法。任何方式,如果您仍然感兴趣,这里与实现 PSHost、Pshostuserinterface 和 pshostrawuserinterface 的接口相同。 stackoverflow.com/questions/1233640/…
    • -Confirm:$false 也为Add-RecipientPermission 成功了。现在我终于可以添加SendAs 权限了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2013-08-29
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多