像asp.net mvc中的cli一样托管powershell来执行维护

时间:2010-08-22 20:36:34

标签: asp.net .net asp.net-mvc powershell powershell-hosting

我需要用于我们的asp.net mvc应用程序的CLI来执行维护任务和一些状态任务。

我认为powershell旨在提供CLI。但除了名字之外,我对此一无所知。

如何在运行iis的asp.net mvc中托管powershell,为自定义任务提供CLI?

2 个答案:

答案 0 :(得分:2)

托管和使用PowerShell引擎的.NET代码非常简单:

private void ExecutePowerShellCommand(string command)
{
    using (var invoker = new RunspaceInvoke())
    {
        Collection<PSObject> results = invoker.Invoke(command);
        foreach (var result in results)
        {
            _listBox.Items.Add(result);
        }                
    }
}

诀窍在于配置PowerShell运行空间以限制可用命令。您可能不希望允许某人从任何旧目录中删除文件,关闭计算机或格式化驱动器(他们可以访问路径中的EXE)。查看Constrained Runspaces以限制通过此机制执行的操作。您还可以限制可用的语言功能。

答案 1 :(得分:0)

之前我从未在PowerShell中完成CLI,但我之前在.NET应用程序中执行了一些PowerShell优点。这可能会有所帮助。

此Channel9剧集包含在.NET应用程序中运行PowerShell 2.0命令的相关详细信息(比1.0更容易):http://channel9.msdn.com/posts/bruceky/How-to-Embedding-PowerShell-Within-a-C-Application/

(请注意,该进程包括使用System.Diagnostics.Process在操作进程的标准输入和输出流时调用命令。我在那条路上做出的任何尝试都遭遇了挫败感和失败。)