PowerShell 批量部署Hyper-V Linux虛機

Write-Host -NoNewline -ForegroundColor Magenta '請輸入要建立的虛機名稱(如:VLNX******)'
[String]$VM_Name = Read-Host
Write-Host -NoNewline -ForegroundColor Magenta '請輸入須要放在哪臺宿主機上(如:PWSR******)'
[String]$VM_HostName= Read-Host
Write-Host -NoNewline -ForegroundColor Magenta '要部署CentOS6仍是7?直接回車默認安裝的是6(如:7 回車 )'
[int16]$VM_OSVersion= Read-Host

#判斷虛機名稱是否爲大寫字母
if ($VM_Name |findstr 'vlnx')
   { Write-Host -NoNewline -ForegroundColor Yellow '注意:虛機名須要使用大寫字母!!!'
     break } 
Else
   { }

$VM_Memory = 2GB
$VM_CpuCount = 2
$NetworkSwitch = "PublicNetwork"

#if判斷要部署的是CentOS6仍是CentOS7,默認是CentOS6
if ($VM_OSVersion -eq '7')
   {$Template_VHDX = "En_CentOS7_Std.vhdx"}
Else
   {$Template_VHDX = "En_CentOS6_Std.vhdx"}
$Template_VHDX_FilePath = "D:\Deploy_Script"

#if判斷若是虛機所在宿主機爲730xd,虛機文件存放位置爲E盤  
if (( $VM_HostName -eq 'PWSR000006' ) -or ($VM_HostName -eq 'PWSR000007' ))
   { $VM_Path = 'E:\' + $VM_HostName + '_E_VMs'
	 $VM_RemotePath = '\\' + $VM_HostName + '\E$\' + $VM_HostName + '_E_VMs' }
Else
   { $VM_Path = 'D:\' + $VM_HostName + '_D_VMs'
	 $VM_RemotePath = '\\' + $VM_HostName + '\D$\' + $VM_HostName + '_D_VMs' }	 
$VM_VHDPath = $VM_Path + '\' + $VM_Name + '\Virtual Hard Disks\'+ $VM_Name + '.vhdx'
$VM_VHDRemotePath = $VM_RemotePath + '\' + $VM_Name + '\Virtual Hard Disks\' + $VM_Name + '.vhdx'

#新建新虛機硬盤目錄,並將目標硬盤Copy到新虛擬硬盤目錄下
New-item -path $VM_RemotePath\$VM_Name -name "Virtual Hard Disks" -type directory
Copy-Item -Path $Template_VHDX_FilePath\$Template_VHDX  -Destination $VM_VHDRemotePath

#新建虛機

#Write-Host -ForegroundColor White "Debug info VMNAME: $VM_Name,HostName: $VM_HostName"

New-VM –Name $VM_Name -ComputerName $VM_HostName –Generation 1 -MemoryStartupBytes $VM_Memory -BootDevice IDE -SwitchName $NetworkSwitch –Path $VM_Path -VHDPath $VM_VHDPath 

#設置CPU個數
Set-VM -Name $VM_Name -ComputerName $VM_HostName -ProcessorCount $VM_CpuCount

#禁用動態內存功能
#Set-VMMemory -Name $VM_Name -ComputerName $VM_HostName -DynamicMemoryEnabled $False  

#設置VLANID
if ($VM_name -like 'VLNX112*' -or $VM_name -like 'VLNX113*' -or $VM_name -like 'VLNX114*')
   { Set-VMNetworkAdapterVlan -ComputerName $VM_HostName -VMName $VM_Name -Access -VlanId 11} 
Else
   { Set-VMNetworkAdapterVlan -ComputerName $VM_HostName -VMName $VM_Name -Access -VlanId 21}

#經過SCVMM分配靜態MACAddress
#Import-Module virtualmachinemanager -Verbose
#$VM_HostServer=Get-SCVMHost -ComputerName $VM_HostName -VMMServer SCVMMServer.Contoso.com
#Read-SCVMHost -VMHost $FS_HostServer |Out-Null
Read-SCVMHost -VMHost $VM_HostName |Out-Null
$VM=Get-SCVirtualMachine -Name $VM_Name
#Write-Host "Debug info"
#$VM.Name
#Pause
$Adapter=$VM.VirtualNetworkAdapters[0]
Set-SCVirtualNetworkAdapter -VirtualNetworkAdapter $Adapter[0] -MACAddressType "Static" -MACAddress "00-00-00-00-00-00"

#啓動虛機
#Start-VM -Name $VM_Name -ComputerName $VM_HostName
Start-SCVirtualMachine -VM $VM_Name

#添加計算機描述
#Set-ADComputer -Identity $VM_Name -Description ""
相關文章
相關標籤/搜索