2014-01-21 3 views
2

Я создаю командлеты PowerShell из Visual Studio, и я не могу узнать, как вызвать командлеты из моего файла C#, или если это возможно? У меня нет проблем с запуском моих командлетов один за другим, но я хочу настроить командлет для запуска нескольких командлетов в сиквеле.Как вызвать командлеты PoweShell из C# в Visual Studio

Благодаря

ответ

7

Да, вы можете позвонить командлеты из кода C#.

Вы будете нуждаться в этих двух пространств имен:

using System.Management.Automation; 
using System.Management.Automation.Runspaces; 

открыть: пространство выполнения

Runspace runSpace = RunspaceFactory.CreateRunspace(); 
runSpace.Open(); 

Создание трубопровода:

Pipeline pipeline = runSpace.CreatePipeline(); 

Создать команду:

Command cmd= new Command("APowerShellCommand"); 

Вы можете добавить параметры:

cmd.Parameters.Add("Property", "value"); 

Добавьте его к трубопроводу:

pipeline.Commands.Add(cmd); 

Запустить команду (ы):

Collection output = pipeline.Invoke(); 
foreach (PSObject psObject in output) 
{ 
    ....do stuff with psObject (output to console, etc) 
} 

это ответить на ваш вопрос?

+1

Не должен конвейер.Commands.Add (getProcess); быть pipe.Commands.Add (cmd); - в противном случае что-то похоже на довольно хороший ответ. –

+0

@simonatrcl Да, спасибо. Ред. – tnw

+0

Преподавал мне что-то, во всяком случае! Приветствия - –