Skip to content

VirtuallyThatGuy

Anything VMware , PowerCLI, PowerShell, Automation and some Windows

Menu
  • Home
  • PowerCLI
  • VMware
  • Automation
  • Windows
  • About
Menu

How to Create Virtual Machines VMs Using PowerCLI Automation – VirtuallyThatGuy

Posted on February 14, 2018December 6, 2022 by VirtuallyThatGuy

This is a quick script using CSV to create VMs from template

###Create VMs Scripts

####create a .ps1 called "create-VMs.ps1" and add below scripts. then Create a CSV "NewVMs.csv" in the scripts folder in C drive

 

$vms​​ =​​ Import-CSV​​ "C:\Scripts\NewVMs.csv"

​​ 

foreach​​ ($vm​​ in​​ $vms){

#Assign Variables

$Template​​ =​​ Get-Template​​ -Name​​ $vm.Template

$Cluster​​ =​​ $vm.Cluster

$Datastore​​ =​​ Get-Datastore​​ -Name​​ $vm.Datastore

$Custom​​ =​​ Get-OSCustomizationSpec​​ -Name​​ $vm.Customization

$vCPU​​ =​​ $vm.vCPU

$Memory​​ =​​ $vm.Memory

$Network​​ =​​ $vm.Network

$Location​​ =​​ $vm.Location

$VMName​​ =​​ $vm.Name

 

#Where the VM gets built

New-VM​​ -Name​​ $VMName​​ -Template​​ $Template​​ -ResourcePool​​ (Get-Cluster​​ $Cluster​​ |​​ Get-ResourcePool)​​ -Location​​ $Location​​ -StorageFormat​​ Thin​​ -Datastore​​ $Datastore​​ -OSCustomizationSpec​​ $Custom

Start-Sleep​​ -Seconds​​ 10

​​ 

#Where the vCPU, memory, and network gets set

$NewVM​​ =​​ Get-VM​​ -Name​​ $VMName

$NewVM​​ |​​ Set-VM​​ -MemoryGB​​ $Memory​​ -NumCpu​​ $vCPU​​ -Confirm:$false

$NewVM​​ |​​ Get-NetworkAdapter​​ |​​ Set-NetworkAdapter​​ -NetworkName​​ $Network​​ -Confirm:$false

}

 

 

​​ 

 

###Create VMs Scripts
####create a .ps1 called "create-VMs.ps1" and add below scripts. then Create a CSV "NewVMs.csv" in the scripts folder in C drive

$vms = Import-CSV "C:\Scripts\NewVMs.csv"
 
foreach ($vm in $vms){
#Assign Variables
$Template = Get-Template -Name $vm.Template
$Cluster = $vm.Cluster
$Datastore = Get-Datastore -Name $vm.Datastore
$Custom = Get-OSCustomizationSpec -Name $vm.Customization
$vCPU = $vm.vCPU
$Memory = $vm.Memory
$Network = $vm.Network
$Location = $vm.Location
$VMName = $vm.Name

#Where the VM gets built
New-VM -Name $VMName -Template $Template -ResourcePool (Get-Cluster $Cluster | Get-ResourcePool) -Location $Location -StorageFormat Thin -Datastore $Datastore -OSCustomizationSpec $Custom
Start-Sleep -Seconds 10
 
#Where the vCPU, memory, and network gets set
$NewVM = Get-VM -Name $VMName
$NewVM | Set-VM -MemoryGB $Memory -NumCpu $vCPU -Confirm:$false
$NewVM | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $Network -Confirm:$false
}


Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • vROps: Management Pack Troubleshooting
  • Windows AD {Active Directory} (PowerShell) samples
  • Migrate VMs Between vCentres Using Powershell or PowerCLI
  • Set VM Tools to Update Automatically on VM Reboot using powershell
  • Windows Administrator Must Have Powershell Commands

Recent Comments

  • JB on Script: How to get VM with Tag Assignment and export results to csv using PowerCLI or Powershell
  • DL on How to change VCSA root password and bypass BAD PASSWORD: it is based on a dictionary word for vCenter VCSA root account warning
  • 360coolp on How to change VCSA root password and bypass BAD PASSWORD: it is based on a dictionary word for vCenter VCSA root account warning
  • Yogesh on ESXi 8.x, 7.x, 6.x Service sfcbd-watchdog Not Running / Fails to Start – VirtuallyThatGuy
  • VirtuallyThatGuy on ESXi 8.x, 7.x, 6.x Service sfcbd-watchdog Not Running / Fails to Start – VirtuallyThatGuy

Archives

  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017

Categories

  • Automation
  • PowerCLI
  • VMware
  • Windows
© 2026 VirtuallyThatGuy | Powered by Superbs Personal Blog theme