shell表示计算机操作系统中的壳层,与之相对的是内核,内核不能与用户直接交互,而是通过shell为用户提供操作界面,shell分为两类,一种提供命令行界面,一种提供图形界面。windows powershell第一个版本是在2006年,提供类似unix系统的命令行壳程程序。powershell是建立在.net framework基础之上的,它内置一百多种cmdlet工具,它不仅可以像传统cmd命令一样管理操作系统,还可以管理针对.net架构下开发的程序,比如system center virtual machine manager内置powershell。

下面我们来敲入两条命令,第一个获取当前系统时间,第二个获取windows以p开头的进程,第三个字母大小写转换。

我们还以用工具集来连接远程计算机。第一个行获取远程计算机登录权限,第二步来检查该计算机sql server服务是否启动。

 $c=get-credential (get-credential -credential domain\administrator)
Get-WmiObject -Query "select * from win32_service where name='mssqlserver'" -computername 192.168.0.181 -credential $c

那么如何用powershell来管理scvmm,这里需要导入scvmm管理模块。可以用get-vm来获取hyperv中某一台名为linux的虚机。

更多的命令工具可以调用get-command来查看。

 add-pssnapin "Microsoft.SystemCenter.VirtualMachineManager"
get-vm -name linux -vmmserver 192.168.0.223

那么如果用代码去实现就需要用到System.Management.Automation.dll工具包。

可以在scvmm安装目录中找到或者C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell类似路径下找到该程序集。

我们用它写一段代码。如果调用scvmm组件,可以将其用wcf部署在同一环境中,否则找不到依赖的组件。

 public List<object> InvokeCmdByParamsWithReturn(string command, Dictionary<string, object> parameters, string module)
{
if (string.IsNullOrEmpty(command)) return null; List<object> returnValue = new List<object>();
try
{
if (conn != null && conn.IsConnected)
{
System.Management.Automation.Runspaces.PSSnapInException warning;
System.Management.Automation.Runspaces.RunspaceConfiguration config = System.Management.Automation.Runspaces.RunspaceConfiguration.Create();
if (!string.IsNullOrEmpty(module))
config.AddPSSnapIn(module, out warning);
System.Management.Automation.Runspaces.Runspace run = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace(config);
run.Open();
using (System.Management.Automation.Runspaces.Pipeline pipeLine = run.CreatePipeline())
{
System.Management.Automation.Runspaces.Command cmd = new System.Management.Automation.Runspaces.Command(command);
if ((parameters != null || parameters.Count > ))
{
foreach (var p in parameters)
{
cmd.Parameters.Add(p.Key, p.Value);
}
}
pipeLine.Commands.Add(cmd);
var result = pipeLine.Invoke();
if (result != null && result.Count > )
{
foreach (var obj in result)
{
StringBuilder sb = new StringBuilder();
foreach (var item in obj.Members)
{
if (item.MemberType == System.Management.Automation.PSMemberTypes.Property)
sb.Append(string.Format("{0}:{1},", item.Name, item.Value));
}
returnValue.Add(sb.ToString().Remove(sb.Length - , ));
}
return returnValue;
}
}
run.Close();
}
return null;
}
catch (Exception ex)
{
return null;
throw new HostingManagementException(ex.Message, ex);
}
}

下面我们在客户端来调用它。第一个是获取bios环境信息,第二个我们来获取主机相关信息。

 protected void Page_Load(object sender, EventArgs e)
{
ServiceReference1.VirtualMachineManagementServiceClient client = new ServiceReference1.VirtualMachineManagementServiceClient();
client.Connect("192.168.0.223", , "hf01\\administrator", "P@ssw0rd110"); Dictionary<string, object> args = new Dictionary<string, object>();
args.Add("class", "Win32_BIOS");
var query = client.InvokeCmdByParamsWithReturn("Get-WmiObject", args, ""); args = new Dictionary<string, object>();
args.Add("vmmserver", "192.168.0.223");
var query2 = client.InvokeCmdByParamsWithReturn("get-vmhost", args, "Microsoft.SystemCenter.VirtualMachineManager"); client.Disconnect();
client.Close();
}

运行结果。

scvmm sdk之powershell(一)的更多相关文章

  1. scvmm sdk之ddtkh(二)

    ddtkh,dynamic datacenter toolkit for hosters,原先发布在codeplex开源社区,后来被微软归档到开发者社区中,从本质上来说它是一个企业级应用的套件,集成了 ...

  2. Citrix 服务器虚拟化之二十一 桌面虚拟化之部署Provisioning Services

    Citrix 服务器虚拟化之二十一  桌面虚拟化之部署Provisioning Services Provisioning Services 是Citrix 出品的一系列虚拟化产品中最核心的一个组件, ...

  3. 通过Python查看Azure VM的状态

    Azure的管理平台采用Restful API的方式实现管理.比如获取VM的管理API的各种操作的文档请参考: https://docs.microsoft.com/en-us/rest/api/co ...

  4. XenDesktop 5 PowerShell SDK Primer – Part 2 – Creating Hypervisor Connections and Hosts

    One of the new changes that you will see in XenDesktop 5 is the configuration of hypervisor connecti ...

  5. C#调PowerShell在SCVMM中创建虚拟机时,实时显示创建进度

    关于c#调用PowerShell来控制SCVMM,网上有很多例子,也比较简单,但创建虚拟机的过程,是一个很漫长的时间,所以一般来说,创建的时候都希望可以实时的显示当前虚拟机的创建进度.当时这个问题困扰 ...

  6. 【Azure Developer】调用SDK的runPowerShellScript方法,在Azure VM中执行PowerShell脚本示例

    当需要通过代码的方式执行PowerShell脚本时,可以参考以下的示例. Azure SDK中提供了两个方法来执行PowerShell脚本 (SDK Source Code: https://gith ...

  7. [No0000105]java sdk 开发环境变量powershell 自动配置脚本

    # 设置Java SDK 环境变量 $softwares = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Unin ...

  8. Windows Server 2012 虚拟化实战:SCVMM的安装和部署

    本篇大概介绍一下在Windows Server 2012 R2上安装和部署SCVMM的过程及其注意事项.下图是我们数据中心SCVMM的基本架构,其中 SCVMM Database 是用于存储了所有配置 ...

  9. Azure PowerShell (1) PowerShell入门

    <Windows Azure Platform 系列文章目录> Update: 2016-01-11 笔者文档主要都是用Azure PowerShell 0.x版本来实现的,比如0.98版 ...

随机推荐

  1. ThinkPHP实现事务回滚示例代码

    ThinkPHP的事务回滚示例如下: ? 1 2 3 4 5 6 7 8 9 10 $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->sta ...

  2. 20190313_C#反转绘制字符串

    效果图: 代码: private void button7_Click(object sender, EventArgs e) { Point p = new Point(10,10); Graphi ...

  3. Android开发入门——Button绑定监听事件三种方式

    import android.app.Activity; import android.os.Bundle;import android.view.View;import android.widget ...

  4. centos7.3部署django用uwsgi和nginx[亲测可用]

    现在nginx nginx version: nginx/1.10.2 uwsgi 2.0.17 django2.0.5 都已经完成完毕,那么开始 uwsgi 配置 uwsgi支持ini.xml等多种 ...

  5. go 算法 查询字符在字符串中的位置

    在utf8字符串判断是否包含指定字符串,并返回下标."北京天安门最美丽" , "天安门"结果:2 解答: import ( "fmt" &q ...

  6. S 导入公司数据

    导入公司数据,使用INSERT [Public] ConnectString=host="siebel://10.10.0.46:2321/HC_CRM/SMObjMgr_chs Conne ...

  7. 九度oj-1533 最长上升子序列 (LIS)

    http://ac.jobdu.com/problem.php?pid=1533 题目描述: 给定一个整型数组, 求这个数组的最长严格递增子序列的长度. 譬如序列1 2 2 4 3 的最长严格递增子序 ...

  8. indexes和indices的区别

    indexes和indices的区别是: indexes在美国.加拿大等国的英语里比较常见.但indices盛行于除北美国家以外的英语里. indices一般在数学,金融和相关领域使用,而indexe ...

  9. oracle 查询死锁

    --查询死锁 select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked ...

  10. Caffe 议事(三):从零开始搭建 ResNet 之 网络的搭建(中)

    上面2个函数定义好了,那么剩下的编写网络就比较容易了,我们在ResNet结构介绍中有一个表,再贴出来: Layer_name Output_size 20-layer ResNet Conv1 32 ...