Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
PowerShell предоставляет разработчикам огромные возможности по управлению операционной системой и серверными программными продуктами. Только PowerShell может использоваться для управления Exchange Server 2010, который является основным компонентом программы Microsoft Live@edu.
В настоящий момент мы ведем разработку мета-сервиса, который позволит применять стандартные методы веб-сервисов для управления всеми компонентами Live@edu, однако для того, чтобы понимать, как работает веб-сервис, создавая пользователей, группы и выполняя настройки, предлагаю убедиться, что доступ к PowerShell из C# действительно очень удобен и прост.
1. Добавление ссылки на сборку
Необходимо добавить ссылку на сброку System.Management.Automation. Она располагается в каталоге C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0.
2. Подключение типов
Добавьте ссылки на типы в код C#.
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
3. Метод запуска команды (сценария)
Добавьте функцию, который будет выполнять команду PowerShell и возвращать результат в виде строки.
static string RunScript(string scriptText)
{
Runspace runspace = RunspaceFactory.CreateRunspace(); // создание процесса
runspace.Open(); // открытие процесса
Pipeline pipeline = runspace.CreatePipeline(); // создание конвейера
pipeline.Commands.AddScript(scriptText); //добавление сценария
pipeline.Commands.Add("Out-String"); // эта команда форматирует вывод. Без нее возвращаются реальные объекты.
Collection<PSObject> results = pipeline.Invoke(); // запуск сценария
runspace.Close(); // закрыте процесса
StringBuilder stringBuilder = new StringBuilder(); // конвертация результата в одну строку с использованием StringBuilder;
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
return stringBuilder.ToString(); // возврат значения
}
4. Использование
Выполните команду Get-Process и посмотрите результат.
string result = RunScript("Get-Process");
Console.WriteLine(result);
Console.ReadLine();
Ссылки:
- Исходный сценарий был опубликован в блоге https://www.codeproject.com/KB/cs/HowToRunPowerShell.aspx?df=100&forumid=402039&exp=0&select=2164398 .
- Возможность асинхронного запуска также рассматривается в статье автора https://www.codeproject.com/KB/threads/AsyncPowerShell.aspx .
- PowerShell в WikiPedia - https://ru.wikipedia.org/wiki/Windows_PowerShell .
Technorati Теги: PowerShell,C#