PowerCLI批量創建VMWare虛機


 #通過自增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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM