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. Java-Runoob-高级教程-实例-字符串:01. Java 实例 – 字符串比较

    ylbtech-Java-Runoob-高级教程-实例-字符串:01. Java 实例 – 字符串比较 1.返回顶部 1. Java 实例 - 字符串比较  Java 实例 以下实例中我们通过字符串函 ...

  2. mysql-2 数据类型

    mysql中定义数据字段的类型对数据库的优化是非常重要的. mysql数据类型大致分为三类:数值.日期/时间.字符串(字符)类型. 数值类型 MySQL支持所有标准SQL数值数据类型. 这些类型包括严 ...

  3. Rancher的安装配置

    1.基于Docker镜像安装Rancher Rancher 服务器是一个 Docker image,所以其软件本身不需要安装,只需要执行 Docker 命令下载并且成功运行 Docker 服务器镜像即 ...

  4. Oracle VM VirtualBox安裝Windows 2000失败

    问题: VirtualBox下安装Windows2000,设置网络后进入最后一步,复制组件……然后就是重启:再试还是重启!   解决: 在Oracle网站上查了一下资料:http://www.virt ...

  5. c#中的可选参数和命名参数的使用

    C#4.0之后出现了一个可选参数这个特性. class Cal { static void Main(string[] args) { test1 t = new test1(); t.Add(, ) ...

  6. OpenMP 奇偶换排序

    ▶ 使用 OpenMP 进行奇偶交换排序 ● 代码 #include <stdio.h> #include <stdlib.h> #include <omp.h> ...

  7. Group By 和Having总结

    1.Group By 概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组 所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理. ...

  8. 基于Windows 配置 nginx 集群 & 反向代理

    1.下载 nginx 下载页面 : http://nginx.org/en/download.html 具体文件: http://nginx.org/download/nginx-1.7.0.zip ...

  9. 【转】关于BeanUtils.copyProperties的用法和优缺点

    一.简介:  BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对Jav ...

  10. C语言链表实现

    #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "stdlib.h" typedef s ...