• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

用C#调用PowerShell3.0并且取得返回值

时间:2015年04月02日 15:26:10    来源:魔法猪系统重装大师官网    人气:15851

最近,随着System Center Virtual Machine Management 2012 SP1 的发布,越来越多的人,加入到私有云的开发中来,特别是,开发测试云,但国内的技术文档及资料相当匮乏。前几天,一个外地的同事在问 “怎么用C# 调用PowerShell并且取得返回值”的问题。

解决方案如下:

调用系统的PowerShell,可以用: 

/// 
        /// invoke system powershell
        /// 
        /// 
        public static void InvokeSystemPS(string cmd)
        {
            List ps = new List();
            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.调用VMM产品,这里以“Get-VM -Name vm001” 为例:

 /// 
        /// Invoke VMM Poershell
        /// 
        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;

Powershell 3.0作为Windows Management Framework 3.0的一部分,集中体现了Powershell 3.0的新特性:Powershell工作流、增强会话灾难恢复、语法简洁方便、增强了cmdlet的查找和自动导入模块的功能、提供了对webservice强大支持和ISE命令加载项等。
Powershell需要用到.NET框架和cmdlets命令集。作为PowerShell的用户,可以使用系统自带的cmdlets,也可以自定义cmdlets,扩展实现更强大的功能。而且,PowerShell使用了面向对象方法,基于.Net,这是VBScript所不能提供或者支持的。

用,调用,PowerShell3.0,并且,取得,返回,值,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部