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. [Android] 开发第十天

    这几天因为电脑的 USB口发生故障,一直没怎么玩 Android-Studio 后来把电脑从  Win7 -> Win10 重装后,一部分 USB口 可以使用了,然后接着开发 Android 接 ...

  2. [转]C# 测试网络连接

    原文链接:http://blog.csdn.net/lsfa1234/article/details/6291228 using System; using System.Web; using Sys ...

  3. Windows 远程桌面连接Ubuntu16.04图像界面

    1.安装xrdp sudo apt-get install xrdp 2. 安装vnc4server sudo apt-get install vnc4server 3. 安装xubuntu-desk ...

  4. NotePad++替换行前、行后空格,替换空行

    用 Notepad++ 打开,把每一个将要放在表中单元格的内容放一行(注: ^ 代表行首 $ 代表行尾) 去除行尾空格和空白行:按CTRL+H 选择正则表达式– 查找目标:\s+$ 替换为空 去除行首 ...

  5. 迷你MVVM框架 avalonjs 沉思录 第2节 DOM操作的三大问题

    jQuery之所以击败Prototype.js,是因为它自一开始就了解这三大问题,并提出完善的解决方案. 第一个问题,DOM什么时候可用.JS不像C那样有一个main函数,里面的逻辑不分主次.但JS是 ...

  6. 小学生福利web及APP原型展示

    332熊哲琛 320刘佳 原型作业地址 https://edu.cnblogs.com/campus/fzzcxy/2016SE/home work/2180 原型设计链接 https://modao ...

  7. MVC表单提交写法1

    初学MVC,感觉跟以前的aspx页面差别很大,我们就先来看看MVC的表单是怎么提交的吧. 现在我们用一个最简单的例子来看一看MVC是怎么提交表单的(这一个例子中,我们的关注点是如何提交表单,所以不涉及 ...

  8. Spring集成Mybatis配置文件的简单理解

    详情可见官方文档http://www.mybatis.org/spring/zh/index.html 一.需要配置的对象实例 1.SqlSessionFactoryBean 在 MyBatis-Sp ...

  9. 26.Remove Duplicates from Sorted Array(Array)

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  10. XAMPP非本地访问被拒绝解决办法

    问题场景: 本机搭建一个apache服务器,正常访问XAMPP目录下的页面. 手机接入同一wifi,以电脑ip方式访问该目录下的页面:提示:Access Denied Access to the re ...