#通過自增IP批量創建虛機
$vc = "vcenter.v.com" $user = "username" $password = "pass" Connect-VIServer -Server $vc -username $user -Password $password #選擇宿主 $vmhost="10.10.20.13" #選擇模板 $template_centos = "CentOS7.6-2" #選擇虛機規范 $custsysprep = "CentOS7.6_Rule" #設置虛機存儲位置 $datastore_103 = "data200.103" #選擇網卡VLAN(分布式虛擬端口組) $network = "VLAN201" #設置CPU、內存、虛機描述 $cpu = 4 $memory = 8 $Notes = "開發使用" $ip_range = 90..191 $IP_Prefix = "10.10.201" $VMName_Prefix = "Dev" $NetMask = "255.255.255.0" $Gateway = "10.10.201.254" foreach ($n in $ip_range[0..1]) { $IP = -Join($IP_Prefix,'.',$n) $vmname = -Join($VMName_Prefix,'_',$IP) $IP + " " + $vmname #自定義虛機規范中的IP信息,DNS不需要更改 Get-OSCustomizationSpec $custsysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $IP -SubnetMask $NetMask -DefaultGateway $Gateway #Get-OSCustomizationSpec $custsysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $IP -SubnetMask $NetMask -DefaultGateway $Gateway -Dns 10.10.10.4,10.10.100.5 #新建虛機,使用模板及規范配置IP,虛機MAC會重新生成 New-VM -Name $vmname -VMHost $vmhost -Portgroup $network -Datastore $datastore_103 -Template $template_centos -OSCustomizationSpec $custsysprep #設置虛機CPU、內存、描述信息 Get-VM -Name $vmname|Set-VM -NumCPU $cpu -MemoryGB $memory -Notes $Notes -Confirm:$false #磁盤擴容到500GB #Get-VM -Name $vmname |Get-HardDisk |Set-HardDisk -CapacityGB 500 -Confirm:$false #新增磁盤,大小為500GB #Get-VM -Name $vmname | New-HardDisk -CapacityGB 500 -Persistence persistent Get-VM -Name $vmname |Start-VM }
通過CSV批量創建虛機,默認使用模板,創建過程中通過修改規范中的IP信息,從而設置虛機IP,MAC地址不會重復,模板默認只有一塊磁盤,如果擴容,則新增第二塊磁盤
$vc = "vc.vm.com" $user = "luser@vm.com" $password = "mypass" Connect-VIServer -Server $vc -username $user -Password $password $vm_file = "d:\vms.csv" $vms = import-csv $vm_file $vms.Count foreach ($vm in $vms) { #選擇宿主、模板、規范、虛機存儲位置、VLAN、CPU、內存、描述信息、第二磁盤大小、IP、子網掩碼、網關、虛機名稱 $vmhost = $vm.Host $template = $vm.Template $custsysprep = "CentOS7.6_Rule" $datastore = $vm.Datastore $network = $vm.Vlan $cpu = $vm.CPU $memory = $vm.Memory $Notes = $vm.Description #默認使用模板機磁盤,如果需要大磁盤,則新增一塊磁盤2 [int]$Disk2 = $vm.Disk2 $IP = $vm.IP $NetMask = "255.255.255.0" $Gateway = ($IP.Split('.')[0..2] -join ".") + ".254" #虛機名稱拼接IP信息 $vmname = -join($vm.Name,'_',$IP) #將IP信息寫入規范,DNS不需要更改 Get-OSCustomizationSpec $custsysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $IP -SubnetMask $NetMask -DefaultGateway $Gateway #新建虛機,使用模板及規范配置IP,虛機MAC會重新生成 New-VM -Name $vmname -VMHost $vmhost -Portgroup $network -Datastore $datastore -Template $template -OSCustomizationSpec $custsysprep #設置虛機CPU、內存、描述信息 Get-VM -Name $vmname|Set-VM -NumCPU $cpu -MemoryGB $memory -Notes $Notes -Confirm:$false #新增磁盤2 if ($Disk2 -gt 0) { Get-VM -Name $vmname | New-HardDisk -CapacityGB $Disk2 -Persistence persistent } #啟動虛機 Get-VM -Name $vmname |Start-VM }
csv信息如下:
根據CSV批量創建虛機,windows和linux都可用
#該腳本用來根據csv定義的信息批量創建虛機 $vc = "vcs.yx.com" $user = "username@yx.com" $password = "password" Connect-VIServer -Server $vc -username $user -Password $password #Disconnect-VIServer -Server $vc $vm_file = "D:\Work\Scripts\VMWare\開發需求統計\vms_win.csv" $vms = import-csv $vm_file $vms.Count # $vms foreach ($vm in $vms) { #選擇宿主、模板、規范、虛機存儲位置、VLAN、CPU、內存、描述信息、IP、子網掩碼、網關、虛機名稱 $vmhost = $vm.Host $template = $vm.Template $custsysprep = $vm.Rule $datastore = $vm.Datastore $network = $vm.Vlan $cpu = $vm.CPU $memory = $vm.Memory $Notes = $vm.Description $computername = $vm.ComputerName $IP = $vm.IP $NetMask = "255.255.255.0" #自動匹配網關 $Gateway = ($IP.Split('.')[0..2] -join ".") + ".254" [array]$DNSs="10.10.1.4","10.10.10.5" #虛機名稱拼接IP信息 $vmname = -join($vm.Name,'_',$IP) #如果CSV中提供了計算機名稱,則進行設置 if ($vm.ComputerName.Length -gt 0) { Get-OSCustomizationSpec $custsysprep | Set-OSCustomizationSpec -NamingScheme fixed -NamingPrefix $vm.ComputerName } #將IP信息寫入規范,DNS不需要更改 if ( (Get-OSCustomizationSpec $custsysprep).OSType -eq "Linux") { Get-OSCustomizationSpec $custsysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $IP -SubnetMask $NetMask -DefaultGateway $Gateway } else { Get-OSCustomizationSpec $custsysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $IP -SubnetMask $NetMask -DefaultGateway $Gateway -Dns $DNSs } #新建虛機,使用模板及規范配置IP,虛機MAC會重新生成 New-VM -Name $vmname -VMHost $vmhost -Portgroup $network -Template $template -OSCustomizationSpec $custsysprep -Datastore $datastore #如果復制模板的時候有報錯,則需要先等待拷貝完成再執行后面命令 if ( (Get-OSCustomizationSpec $custsysprep).OSType -eq "Linux") { Start-Sleep -Seconds 60 } else { Start-Sleep -Seconds 240 } #設置虛機CPU、內存、描述信息 Get-VM -Name $vmname|Set-VM -NumCPU $cpu -MemoryGB $memory -Notes $Notes -Confirm:$false #啟動虛機 Get-VM -Name $vmname |Start-VM }
csv內容如下:
windows_Rule_IP 計算機名稱和IP提前隨意設置一個,在腳本執行過程中會自行更改
Get-template
Get-VDPortgroup
#獲取虛機IP: (get-vm vmname).guest
#獲取虛機名稱、IP、狀態、CPU、內存
get-vm vmname |select name,@{name="IP";express={($_.Guest.IPAddress|select-string 10.10).Line}},PowerState,NumCpu,memoryGB |ft -AutoSize -Wrap
get-vm | ? {$_.powerstate -eq "PoweredOn"} |select name,@{name="IP";express={($_.Guest.IPAddress|select-string 10.10).Line}},@{name="OS";express={$_.Guest.OSFullName}},powerstate |export-csv d:\vmsall.csv -Encoding Default -NoTypeInformation
#獲取磁盤大小:
get-vm vmname |Get-harddisk |Measure-Object CapacityGB -Sum