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