我需要用于我们的asp.net mvc应用程序的CLI来执行维护任务和一些状态任务。
我认为powershell旨在提供CLI。但除了名字之外,我对此一无所知。
如何在运行iis的asp.net mvc中托管powershell,为自定义任务提供CLI?
答案 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
在操作进程的标准输入和输出流时调用命令。我在那条路上做出的任何尝试都遭遇了挫败感和失败。)