天高地厚

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

环境:

  Win server 2008 R2 + Hyper-v + SCVMM2008 R2

目的:

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

 

在SCVMM2008R2中手动创建一个vm(虚拟机)时,作业界面中会显示很详细的创建进度,包括有哪些子任务,每个任务的完成度、状态等信息。SCVMM的界面操作是基于Powershell的,所以肯定有ps脚本可以实现上述目的。

microsoft提供的创建虚拟机的ps脚本中,提到如下内容(为显示PS脚本中部分内容被回车

$NewVMTasks= [System.Array]::CreateInstance("Microsoft.SystemCenter.VirtualMachineManager.Task", $NumVMs)
$NewVMs= [System.Array]::CreateInstance("Microsoft.SystemCenter.VirtualMachineManager.VM", $NumVMs)
$i=0
# Loop that creates each VM asynchronously.
while($NumVMs-gt0)
{
# Generate a unique VM name.
$VMRnd=$Random.next()
$NewVMName=$VMName+$VMRnd
# Get the ratings for each host and sort the hosts by ratings.
$Ratings=@(Get-VMHostRating -Template $Template-VMHost $VMHosts-DiskSpaceGB $DiskSizeGB
 -VMName $NewVMName| where { $_.Rating -gt0} | Sort-Object -property Rating -descending)
if ($Ratings.Count -gt0)
{
$VMHost=$Ratings[0].VMHost
$VMPath=$Ratings[0].VMHost.VMPaths[0]
# Create a new VM from the template and add an additional VHD
# to the VM.
$NewVMJobGroup= [System.Guid]::NewGuid()
$VMAdditionalVhd| Add-VirtualHardDisk -Bus 0-Lun 1-IDE -JobGroup $NewVMJobGroup
$NewVMs