Here is my script:
Connect-VIServer –Server 'vcentersrv01'
$vmName = "vm-iso-creator2"
$hdSize_os = 50 * 1GB
$hdSize_app = 50 * 1GB
$hdSize_arch = 50 * 1GB
$hdSize_db = 100 * 1GB
$hdSize_vip = 50 * 1GB
new-vm -name $vmName -vmhost 'esx14' -datastore 'ant_esxds01' -diskGB 10 -cd -MemoryGB 16 -numcpu 2 -networkname 'VM Network'
$spec = New-Object -Type VMware.Vim.VirtualMachineConfigSpec -Property @{"NumCoresPerSocket" = 2}
(get-vm $vmName).ExtensionData.ReconfigVM_Task($spec)
get-vm -name $vmName | get-cddrive | set-cddrive -isopath "[ant_esx_iso01] ISO\RHEL76.iso" -StartConnected $true -confirm:$false
$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
$vmConfigSpec.Tools = New-Object VMware.Vim.ToolsConfigInfo
$vmConfigSpec.Tools.ToolsUpgradePolicy = "UpgradeAtPowerCycle"
(get-vm $vmName).ExtensionData.ReconfigVM_Task($vmConfigSpec)
#IDE DISK
$vm = Get-VM -Name $vmName
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
# Check if there is an IDE COntroller present
$ideCtrl = $vm.ExtensionData.Config.Hardware.Device | where {$_.GetType().Name -eq "VirtualIDEController"} | select -First 1
if(!$ideCtrl){
$ctrl = New-Object VMware.Vim.VirtualDeviceConfigSpec
$ctrl.Operation = "add"
$ctrl.Device = New-Object VMware.Vim.VirtualIDEController
$ideKey = -1
$ctrl.Device.ControllerKey = $ideKey
$spec.deviceChange += $ctrl
}
else{
$ideKey = $ideCtrl.Key
}
# Remove SCSI disk
get-harddisk -vm $vmName | remove-harddisk -confirm:$false -deletepermanently
# Get next harddisk number
$hdNr = 0
$vm.ExtensionData.Config.Hardware.Device | where {$_.GetType().Name -eq "VirtualDisk"} | %{
$nr = [int]$_.DeviceInfo.Label.Split(' ')[2]
if($hdNr -lt $nr){
$hdNr = $nr }
if($hdNr -eq 0){$hdNrStr = ""}
else{$hdNrStr = "_" + $hdNr}
# Get datastore
$dsName = $vm.ExtensionData.Config.Files.VmPathName.Split(']')[0].TrimStart('[')
#
# Add IDE harddisk for OS
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$dev.FileOperation = "create"
$dev.Operation = "add"
$dev.Device = New-Object VMware.Vim.VirtualDisk
$dev.Device.backing = New-Object VMware.Vim.VirtualDiskFlatVer2BackingInfo
$dev.Device.backing.Datastore = (Get-Datastore -Name $dsName).Extensiondata.MoRef
$dev.Device.backing.DiskMode = "persistent"
$dev.Device.Backing.FileName = "[" + $dsName + "] " + $vmName + "/" + $vmName + $hdNrStr + ".vmdk"
$dev.Device.backing.ThinProvisioned = $true
$dev.Device.CapacityInKb = $hdSize_os / 1KB
$dev.Device.ControllerKey = $ideKey
$dev.Device.UnitNumber = -1
$spec.deviceChange += $dev
$vm.ExtensionData.ReconfigVM($spec)
#
# Add IDE harddisk for APP
$hdNrStr = "_2"
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$dev.FileOperation = "create"
$dev.Operation = "add"
$dev.Device = New-Object VMware.Vim.VirtualDisk
$dev.Device.backing = New-Object VMware.Vim.VirtualDiskFlatVer2BackingInfo
$dev.Device.backing.Datastore = (Get-Datastore -Name $dsName).Extensiondata.MoRef
$dev.Device.backing.DiskMode = "persistent"
$dev.Device.Backing.FileName = "[" + $dsName + "] " + $vmName + "/" + $vmName + $hdNrStr + ".vmdk"
$dev.Device.backing.ThinProvisioned = $true
$dev.Device.CapacityInKb = $hdSize_app / 1KB
$dev.Device.ControllerKey = $ideKey
$dev.Device.UnitNumber = -1
$spec.deviceChange += $dev
$vm.ExtensionData.ReconfigVM($spec)
When running it, the VM gets created but with only one disk.... When trying to create th 2nd disk, I'm getting an error saying already exist. But I have set hdNrStr = "_2" and the first disk has "_1"