Use C # To Call PowerShell 3.0.

Source: Internet
Author: User

Recently, with the release of System Center Virtual Machine Management 2012 SP1, more and more people are joining the development of private cloud, especially the development and testing cloud, however, technical documents and materials in China are quite scarce. A foreign colleague asked "How to Use C # To Call PowerShell and obtain the return value" a few days ago.

The solution is as follows:

  1. You can call the system PowerShell by using the following code:
 /// <summary>        /// invoke system powershell        /// </summary>        /// <param name="cmd"></param>        public static void InvokeSystemPS(string cmd)        {            List<string> ps = new List<string>();            ps.Add("Set-ExecutionPolicy RemoteSigned");            ps.Add("Set-ExecutionPolicy -ExecutionPolicy Unrestricted");            ps.Add("& " + cmd);            Runspace runspace = RunspaceFactory.CreateRunspace();            runspace.Open();            Pipeline pipeline = runspace.CreatePipeline();            foreach (var scr in ps)            {                pipeline.Commands.AddScript(scr);            }            pipeline.Invoke();//Execute the ps script            runspace.Close();        }

2. Call the VMM product. Here we use "Get-VM-Name vm001" as an example:

 /// <summary>        /// Invoke VMM Poershell        /// </summary>        public static void InvokeVMMPS()        {            RunspaceConfiguration rconfig = RunspaceConfiguration.Create();            PSSnapInException Pwarn = new PSSnapInException();                       Runspace runspace = RunspaceFactory.CreateRunspace();             string test = "Import-Module VirtualMachineManager\r\n";            runspace = RunspaceFactory.CreateRunspace(rconfig); runspace.Open();            Pipeline pipeline = runspace.CreatePipeline();             pipeline.Commands.AddScript(test);             try {                 var results = pipeline.Invoke();                using (Pipeline pipe = runspace.CreatePipeline())                {                    //Get-VM -Name vm001                    Command cmd = new Command("Get-VM");                    cmd.Parameters.Add("Name", "vm001");                    pipe.Commands.Add(cmd);                    var result = pipe.Invoke();                }            }            catch (Exception ex)             {                throw ex;            }        }

Firstly, you need to add reference "System. Management. Automation". Then, add two name space:

Using System. Management. Automation. Runspaces;

Using System. Management. Automation;

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.