WindowsPowerShell使用说明WindowsPowerShell使用说明Page2of44WindowsPowerShell使用说明WindowsPowerShell是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用.NETFramework的强大功能。本期TT虚拟化技术手册介绍WindowsPowerShell的使用方法,还会涉及到VMwarePowerCLI的相关信息。PowerShell与Hyper-VSCVMM和Hyper-VPowerShellcmdlets帮助虚拟机环境的管理员开启了新的管理模式。PowerShell不仅能对Hyper-V进行监控与测试,还能克服Hyper-V热迁移限制,您需要掌握哪些命令呢?Hyper-VPowerShell中的常用命令简介使用PowerShell进行Hyper-V监控与测试使用PowerShell克服Hyper-V热迁移限制PowerShell与PowerCLI拿VMware的PowerCLI与微软的PowerShell作比较似乎是太可能,因为前者需要后者先安装好,且它仅是一个针对核心PowerShell环境的供应商指定附加物。两者结合能发挥很大作用。VMwarePowerCLI和微软PowerShell谁好?使用PowerShell与PowerCLI自动化主机服务器任务在vSpherePowerCLIPowerShell界面使用hostprofiles跳出框外巧解PowerShell与PowerCLI难题WindowsPowerShell使用说明Page3of44PowerShell管理技巧Windows7远程桌面管理?CitrixXenDesktop5管理?PowerShell都能掌控。PowerShell管理Windows7远程桌面的技巧使用WindowsPowerShell管理CitrixXenDesktop5使用WindowsPowerShell管理远程桌面设备WindowsPowerShell使用说明Page4of44Hyper-VPowerShell中的常用命令简介对于虚拟机、宿主机和任务进程而言,微软Hyper-V管理控制台和SCVMM(SystemCenterVirtualMachineManager)都是很不错的管理工具。但是和大多数的图形界面接口(GUI)工具一样,都无法避免在客户定制化和管理权限上受到限制。但是PowerShell的使用可以很好的弥补Hyper-V在管理方面的缺陷。SCVMM和Hyper-VPowerShellcmdlets帮助虚拟机环境的管理员开启了新的管理模式。在本文中,TechTarget中国的特约专家RobMcShinsky讲述一些PowerShellcmdlets和命令。即使您没有购买SCVMM,依然可以使用PowerShell来完成大多数的任务,包括:获得基本的系统信息、创建新的虚拟机和完成在线迁移过程等。首先,下载并安装Hyper-VPowerShell模块。(或许某些时候您还需要更改PowerShell的执行模式,以保证该模块可以正确运行。在WindowsServer2008中它可以正常工作,但是在Windows7中,您可能需要对执行模式做更改以减轻其受到的限制。这并不是最佳的办法,但是请注意有些时候我们必须减轻执行模式的限制。)在完成了Hyper-VPowerShell模块的安装后,接下来就可以尝试一些基本的功能。在你对这些PowerShellcmdlets和命令足够熟悉之后,还可以组合一些命令编写成更加复杂和实用的脚本。但是这个过程并不像“HelloWorld”那么简单,在我们学习跑步之前先来学习走路。Get-VM。这个cmdlets对于很多脚本程序而言,都是最基本的常用命令之一,而且从字面上也很容易理解。Get-VM检索虚拟机相关的信息,然后快速呈现出某台特定主机上的虚拟机状态。我经常这样使用该命令:Get-VM--Server图1WindowsPowerShell使用说明Page5of44请注意,您必须通过-Server辅助命令来锁定某一台特殊的服务器操作,这点在使用Hyper-V管理控制台时也是一样的。New-VM,Set-VMMemory,Set-VMCPUCount,Add-NewVirtualHardDisk.这一组Hyper-VPowerShellcmdlets用于创建新虚拟机。虽然在Hyper-VManagerGUI中通过配置向导来完成更加简单一些,但是在需要同时创建多个虚拟机的时候,命令行的方式会更加好用。图2通过这些命令做简单调整,还可以增加或修改多台虚拟机。New-VM-ServerHost1-NameRobTest2,RobTest3,RobTest4-Pathd:Set-VMMemory-ServerHost1-VMRobTest2,RobTest3,RobTest41024Set-VMCPUCount-ServerHost1-VMRobTest2,RobTest3,RobTest44WindowsPowerShell使用说明Page6of44Add-NewVMHardDisk-ServerHost1-VMRobTest2,RobTest3,RobTest4-Size24GB现在您可以看到,在同时创建多个虚拟机时这样可以节省时间。Start-VM,Stop-VM,Save-VM,Shutdown-VM.用于完成虚拟机状态调整的命令也非常的好用。有一些操作无法通过GUI来实现的,我经常使用这些命令来关闭虚拟机或是保存虚拟机状态以用于故障诊断。和同时创建和调整多个虚拟机的命令相似,通过这些命令可以同时改变多台虚拟机的运行状态。Start-VM-ServerHost1-VMRobTest2,RobTest3,RobTest4Stop-VM-ServerHost1-VMRobTest2,RobTest3,RobTest4Save-VM-ServerHost1-VMRobTest2,RobTest3,RobTest4Shutdown-VM-ServerHost1-VMRobTest2,RobTest3,RobTest4注:如果要使用Shutdown-VM命令,需要安装Hyper-V集成组件。Move-VM.PowerShell还可以用于帮助完成Hyper-V集群的某些工作。我曾经在FailoverClusterAdministrator无法正确工作的情况下,使用如下的命令迁移虚拟机以用于故障的诊断。当然,使用cluster.exe命令也可以在节点间迁移虚拟机,但是我更喜欢使用PowerShell命令。Move-VM-ServerHost1-VMRobTest2-DestinationHost2--force当然,多台虚拟机的迁移也是可以实现的,但是需要连续地操作。Move-VM-ServerHost1-VMRobTest2,RobTest3,RobTest4-DestinationHost2--force或者借助通配符,您也可以把Host1上的所有以RobTest开头的虚拟机迁移到Host2上。Move-VM-ServerHost1-VMRobTest%-DestinationHost2--force(注:为了避免出现提示信息:“WARNING:Clustercommandsnotloaded.Import-ModuleFailoverClustersandtryagain”,运行“Run,Import-ModuleFailoverCluster”命令完成FailoverCluster模块的装载,并启用PowerShell的集群属性。)WindowsPowerShell使用说明Page7of44在您对这些PowerShellcmdlets和命令逐渐熟悉以后,可以尝试浏览一下PowerShellManagementLibraryforHyper-V手册。虽然手册的内容本身让人昏昏欲睡,但是我们可以一边阅读一边实践一些新的Hyper-VPowerShell命令,之后您可能会发现它提供了一种通用的语法模式。那么,您就可以编写脚本来借助PowerShell完成一些更加复杂的辅助性管理工作,相信您会慢慢发现这样做要比完全使用Hyper-V向导来完成虚拟机管理任务快地多。(来源:TechTarget中国)WindowsPowerShell使用说明Page8of44使用PowerShell进行Hyper-V监控与测试通过PowerShell可以实现VMware中的很多管理功能,因此Hyper-V也可以通过类似的方式去管理。然而微软在通过PowerShell命令(或称为cmdlet)管理Hyper-V方面做的工作并不多。如果您的版本是WindowsServer2008R2,借助文件库可以和VMware一样通过免费的PowerShellcmdlet来监控和管理Hyper-V。该文本库俗称“PowerShellModuleforHyper-V”,其中包括了用于完成虚拟机状态监控、检索硬件配置和获取其它虚拟机相关数据的cmdlet。通过这些Hyper-V便捷管理方式,您可以检查虚拟机是否健康、内存容量甚至是功能状态。安装和测试用于Hyper-V管理的PowerShellPowerShell模块需要简单几步安装过程,你需要主机安装2.0版的.NETFramework和启用WindowsPowerShell。请注意安装程序需要调用PowerShell脚本,因此您只有在系统中启用PowerShell执行策略为无限制模式(微软通常不推荐这么做)才可以完成安装。通过输入Set-ExecutionPolicyUnrestrictedcmdlet可以更改策略。如果您不希望做更改,可以手动完成各个部分的注册。完成PowerShell模块安装后下一步是检查您的用户是否具备在服务器上的管理员权限,否则部分Hyper-V管理用cmdlet可能无法工作。输入Test-Admincmdlet可以检查权限。图1中所示Windows通过true或false给出是否具备管理权限的回答。图1WindowsPowerShell使用说明Page9of44在您安装完PowerShell模块后,检查账户是否具备管理员权限。监控虚拟机状态PowerShell可以监控在Hyper-V服务器上的多个虚拟机的运行状态。通过如下cmdlet获取虚拟机参数:Get-VM.Windows返回某台服务器上的每台虚拟机的名称、基本状态和正常运行时间等信息。Get-VMSummary。输入该命令,并附加您希望检查的机器名称,可以获得某个指定虚拟机的更多细节。Windows会返回很多,包括虚拟机使用的虚拟CPU数量、CPU加载历史记录、操作系统、创建时间以及被系统认证过的域名全称等信息。(参考图2)图2WindowsPowerShell使用说明Page10of44通过命令行可以获取虚拟机的健康信息。测试虚拟机功能您还可以了解虚拟机是否按照指定的方式工作。使用Test-VMHeartbeatcmdlet来检查虚拟机是否响应。Windows返回OK表示指定的虚机心跳信息正常。(参考图3)图3WindowsPowerShell使用说明Page11of44测试虚拟机心跳信息检查硬件配置很多cmdlet可以返回虚拟机的硬件资源分配情况。如下的硬件专用cmdlet可以帮助改善Hyper-V的管理。Get-VMSettingData.Windows返回每个虚拟机硬件配置的详细信息。如图4,我指定了用列表输出的方式。另外,还可以以概要方式输出。如果您没有指定虚拟机,cmdlet会提供所有该服务器上的虚机硬件配置。为了补充您的Hyper-V管理策略,可以把该信息输出为CSV文件并在Excel中编辑。图4WindowsPowerShell使用说明Page12of44您可以获得虚拟机的硬件配置信息Get-VMMemory.这个cmdlet提供了为每