程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#調PowerShell在SCVMM中創建虛擬機時,實時顯示創建進度

C#調PowerShell在SCVMM中創建虛擬機時,實時顯示創建進度

編輯:C#入門知識

關於c#調用PowerShell來控制SCVMM,網上有很多例子,也比較簡單,但創建虛擬機的過程,是一個很漫長的時間,所以一般來說,創建的時候都希望可以實時的顯示當前虛擬機的創建進度。當時這個問題困擾了我了一段時間,但找到方法以後,發現其實很簡單。

環境:

  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 -gt 0)
{
# 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 -gt 0} | Sort-Object -property Rating -descending)
if ($Ratings.Count -gt 0)
{
$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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved