Search code examples
c#powershellvisual-studio-2012powershell-cmdlet

How to call PowerShell cmdlets from C# in Visual Studio


I'm creating a PowerShell cmdlets from Visual Studio and I can't find out how to call cmdlets from within my C# file, or if this is even possible? I have no trouble running my cmdlets one by one, but I want to set up a cmdlet to run multiple cmdlets in a sequel.


Solution

  • Yes, you can call cmdlets from your C# code.

    You'll need these two namespaces:

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

    Open a runspace:

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

    Create a pipeline:

    Pipeline pipeline = runSpace.CreatePipeline();
    

    Create a command:

    Command cmd= new Command("APowerShellCommand");
    

    You can add parameters:

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

    Add it to the pipeline:

    pipeline.Commands.Add(cmd);
    

    Run the command(s):

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

    Does this answer your question?