Хостинг PowerShell, как Cli в MVP asp.net для выполнения сопровождения

Мне нужен CLI для нашего приложения asp.net mvc для выполнения задач обслуживания и некоторых задач состояния.

Я думаю, PowerShell предназначен для обеспечения CLI. Но я не знаю ничего об этом, кроме имени.

Как я могу разместить PowerShell в asp.net MVC, работающей в IIS, чтобы обеспечить CLI для пользовательских задач?

2 ответа

Код.NET для размещения и использования механизма PowerShell очень прост:

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-файлам в пути). Изучите ограниченные пространства выполнения, чтобы ограничить то, что может быть выполнено с помощью этого механизма. Вы также можете ограничить доступные языковые функции.

Я никогда раньше не делал CLI в PowerShell, но раньше я выполнял некоторые преимущества PowerShell в приложении.NET. Вот кое-что, что может помочь.

Этот эпизод Channel9 содержит соответствующие подробности для запуска команд PowerShell 2.0 в приложении.NET (что намного проще, чем в 1.0): http://channel9.msdn.com/posts/bruceky/How-to-Embedding-PowerShell-Within-a-C-Application/

(Обратите внимание, что процесс не включает использование System.Diagnostics.Process вызывать команды, манипулируя стандартным потоком ввода и вывода процесса. Любые попытки, которые я предпринял по этому пути, были встречены разочарованием и провалом.)

Другие вопросы по тегам