хостинг powershell как cli в asp.net mvc для выполнения сопровождения - PullRequest
2 голосов
/ 23 августа 2010

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

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

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

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

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

0 голосов
/ 23 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...