Hyper-V配置(三)

贴一份创建Hyper-V虚拟机的代码:

function CreateVM
{
	param
	  (
		[string]$vmName = $(throw "param -vmName is required."),
                [long]$vmRAMSize = $(throw "param -vmRAMSize is required."),
                [long]$vmDiskSize = $(throw "param -vmDiskSize is required."),
		[string]$storePath = $(throw "param -storePath is required."),
		[string]$isoPath = $(throw "param -isoPath is required."),
		[string]$internalLan = $(throw "param -internalLan is required."),
		[string]$externalLan = $(throw "param -externalLan is required."),
	        [int]$cpuCount = $(throw "param -cpuCount is required."),
		[string]$eth2ip = $(throw "param -eth2ip is required."),
		[string]$eth2Netmask = $(throw "param -eth2Netmask is required."),
		[string]$eth2GW = $(throw "param -eth2GW is required.")
	  )
	  $eth0="Eth0"
	 
	  ##delete existing VM and VM file which has same VMname    
	  foreach($existingVMItem in Get-VM)
	  {
	      if($existingVMItem.Name -eq $vmName)
	      {
	          Remove-VM -Name $vmName -Force
	      }
	  }
	  $existingVMLoc=Test-Path $storePath
	  if(-not $existingVMLoc)
	  {
	      MD $storePath
	  }else
	  {
	      rmdir $storePath -Recurse -Force
	  }      
	  new-vm $vmName -path $storePath
	
	  ##delete existing VM switch by same switch name and 
	  foreach($existingVMSwitch in Get-VMSwitch)
	  {
	      if(($existingVMSwitch.NetAdapterInterfaceDescription) -or ($existingVMSwitch.Name -eq $eth0) -or ($existingVMSwitch.Name -eq $eth1) -or ($existingVMSwitch.Name -eq $eth2))
	      {
	          Remove-VMSwitch -Name $existingVMSwitch.Name -Force
	      }
	  }
	
	  ##add new VM switch
	  New-VMSwitch $eth0 -NetAdapterName $internalLan
	  
	  ##Define disk size
	  $vmDiskSize = $vmDiskSize*1024*1024*1024
	  New-VHD -Path $storePath\$vmName.vhdx -size $vmDiskSize
	  Add-VMHardDiskDrive -VMName $vmName -ControllerType ide -ControllerNumber 0 -path $storePath\$vmName.vhdx
	
	  ##define ram size
	  $vmRAMSize = $vmRAMSize*1024*1024
	  get-vm $vmName | Set-VMMemory -DynamicMemoryEnabled $True -MinimumBytes $vmRAMSize  -StartupBytes $vmRAMSize  -MaximumBytes 4GB -Priority 80 -Buffer 25 
	
	  ##add DVD driver (iso) 
	  Add-VMDvdDrive -VMName $vmName -Path $isoPath
	  
	  ##set CPU processor
	  Set-VMProcessor $vmName -Count $cpuCount -Reserve 10 -Maximum 90
	
	  ##remove default VMNetworkAdapter which named Network Adapter
	  foreach($existingVMNetworkAdapter in Get-VMNetworkAdapter -VMName $vmName)
	  {
	      Remove-VMNetworkAdapter -VMName $vmName -Name $existingVMNetworkAdapter.Name
	  }
	
	  ##add new VMNetworkAdapter
	  Add-VMNetworkAdapter -VMName $vmName -Name $eth0
	  Get-VMNetworkAdapter -VMName $vmName -Name $eth0   | Connect-VMNetworkAdapter -SwitchName $eth0
}

下一篇再说C#下的调用


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值