scvmm sdk之powershell(一)

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

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

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

1 $c=get-credential (get-credential -credential domain\administrator)
2 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来查看。

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

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

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

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

 1 public List<object> InvokeCmdByParamsWithReturn(string command, Dictionary<string, object> parameters, string module)
 2 {
 3     if (string.IsNullOrEmpty(command)) return null;
 4
 5     List<object> returnValue = new List<object>();
 6     try
 7     {
 8         if (conn != null && conn.IsConnected)
 9         {
10             System.Management.Automation.Runspaces.PSSnapInException warning;
11             System.Management.Automation.Runspaces.RunspaceConfiguration config = System.Management.Automation.Runspaces.RunspaceConfiguration.Create();
12             if (!string.IsNullOrEmpty(module))
13                 config.AddPSSnapIn(module, out warning);
14             System.Management.Automation.Runspaces.Runspace run = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace(config);
15             run.Open();
16             using (System.Management.Automation.Runspaces.Pipeline pipeLine = run.CreatePipeline())
17             {
18                 System.Management.Automation.Runspaces.Command cmd = new System.Management.Automation.Runspaces.Command(command);
19                 if ((parameters != null || parameters.Count > 0))
20                 {
21                     foreach (var p in parameters)
22                     {
23                         cmd.Parameters.Add(p.Key, p.Value);
24                     }
25                 }
26                 pipeLine.Commands.Add(cmd);
27                 var result = pipeLine.Invoke();
28                 if (result != null && result.Count > 0)
29                 {
30                     foreach (var obj in result)
31                     {
32                         StringBuilder sb = new StringBuilder();
33                         foreach (var item in obj.Members)
34                         {
35                             if (item.MemberType == System.Management.Automation.PSMemberTypes.Property)
36                                 sb.Append(string.Format("{0}:{1},", item.Name, item.Value));
37                         }
38                         returnValue.Add(sb.ToString().Remove(sb.Length - 1, 1));
39                     }
40                     return returnValue;
41                 }
42             }
43             run.Close();
44         }
45         return null;
46     }
47     catch (Exception ex)
48     {
49         return null;
50         throw new HostingManagementException(ex.Message, ex);
51     }
52 }

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

 1 protected void Page_Load(object sender, EventArgs e)
 2 {
 3     ServiceReference1.VirtualMachineManagementServiceClient client = new ServiceReference1.VirtualMachineManagementServiceClient();
 4     client.Connect("192.168.0.223", 8100, "hf01\\administrator", "[email protected]");
 5
 6     Dictionary<string, object> args = new Dictionary<string, object>();
 7     args.Add("class", "Win32_BIOS");
 8     var query = client.InvokeCmdByParamsWithReturn("Get-WmiObject", args, "");
 9
10     args = new Dictionary<string, object>();
11     args.Add("vmmserver", "192.168.0.223");
12     var query2 = client.InvokeCmdByParamsWithReturn("get-vmhost", args, "Microsoft.SystemCenter.VirtualMachineManager");
13
14     client.Disconnect();
15     client.Close();
16 }

运行结果。

scvmm sdk之powershell(一)

时间: 2024-11-06 20:39:31

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

scvmm sdk之ddtkh(二)

ddtkh,dynamic datacenter toolkit for hosters,原先发布在codeplex开源社区,后来被微软归档到开发者社区中,从本质上来说它是一个企业级应用的套件,集成了微软的scvmm.scom.dpm和sms这几款windows平台应用,经过进一步的封装,通过wcf的方式提供这些应用的api接口. 现在社区提供了3.0和3.1两中版本,3.0之后各个应用的封装开发包独立出来了.比如有人需要2012的scvmm开发包,可以下载3.1的,不支持scvmm2008.

Hyper-V Server 2012 R2服务器配置

前文说过Hyper-V Server 2012 R2是不带GUI界面的hypervisor,类似于VMware的 ESXI和Citrix的XenServer,需要借助Hyper-V.SCVMM或者Hyper-V PowerShell配置与管理,本章节主要讲述在进行管理Hyper-V Server 2012 R2之前,需要进行的简单配置.,关于安装部分,详情请见 http://ericxuting.blog.51cto.com/8995534/1582541 在Microsoft Hyper-V

配置Microsoft Hyper-V Server

配置Microsoft Hyper-V Server 前面的博文中和大家说过说过Hyper-V Server 2016 TP4是不带GUI界面的hypervisor,也就是我们说的裸金属安装,类似于VMware的 ESXI和Citrix的XenServer,需要借助Hyper-V.SCVMM或者Hyper-V PowerShell配置与管理,这篇博文主要是为后面真正管理Microsoft Hypervisio做铺垫,来为大家讲解一些管理前需要知道的简单配置.如果有朋友对于Microsoft Hy

PowerShell实现批量收集SCVMM中虚拟机IP

首先,这个脚本有个功能限制:只能针对已安装代理的Windows虚拟机. 先看看以前只会写CMD阶段做的脚本吧.http://jiushu.blog.51cto.com/972756/1419862 这个阶段写的脚本思路都充满了人文关怀 Invoke-Command -ComputerName hahv1,hahv2,hahv3 -Command{Get-VMNetworkAdapter -all |Select-Object VMname,IPAddresses | Format-Table >

PowerShell针对SCVMM批量导出模板的描述信息以及导入

SCVMM的模板也会给Windows Azure Pack使用,这个时候如果手头有很多很多的节点需要导入导出,会是非常麻烦的一个事情,手动改的工作量很大. 比如说下面这张图,一个vhdx文件包含至少有名称.系列.版本.操作系统.以及本来路径的名字,另外如果是给Windows Azure Pack使用,可能还包含一个tag.这些属性都需要一一输入,一两个可能你还愿意自己手动修改,但是多了呢?不仅容易出错,挣钱干活的速度也大大降低了.解决这个问题同样使用PowerShell完成,用到的方法不多,依然

PowerShell实现批量收集SCVMM中虚拟机IP-续

因为本人技术提升了,所以这个脚本又改进了,得益于同事给我悉心教导c#语法,这个脚本更好用了.废话不多说,直接上代码. #powerd by 九叔 #批量从VMM和Hyper-V中获取IP地址,方便比对.更准确. #转载必须注明出处,可以以此做改进. param(   [String]$vmmServer = "sc-vmmsp1"  ) Import-Module virtualmachinemanager Get-SCVMMServer -ComputerName $vmmServe

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

# 设置Java SDK 环境变量 $softwares = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* #$jdk = $softwares | Where-Object DisplayName -Match 'Java SE Development Kit' #$RegPath = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr

【NetApp】在Cmode中使用NetApp powershell SDK工具导入ExportPolicy Rules

1)得到 Export Policy信息: $export_policy = Get-NcExportPolicy -Name testPolicy -VserverContext SVMDes 2)得到Export Rules信息: $export_rules = Get-NcExportRule -Policy testPolicy -VserverContext SVMDes 此处,如果使用$export_policy变量,只能获得defualt Policy的rules信息.如果需要得到

Automate Xen Server 6.2 Patch update by powershell

最近有点功夫安装测试了下Xen Server6.2 ,这个版本及之后开始开源了,未许可版本和许可版本的最大区别是许可版本可通过Xencenter 来自动化补丁安装.总之,xencenter 的很多特点符合我的要求: 1. 免费版本.功能基本很全(HA.支持USB forward to VM.模板.快照) 2. windows 下xencenter 图形化进行管理,也可以使用各种语言,如C#\Python\Powershell来进行管理. 3. 稳定性不错,和之前的virtualbox On He