$vmNames = 'VM1','VM2'
$nrDB = 2
$nrDisk= 9
$diskSizeGB = 1
$diskUnitNr = 1..15 | where{$_ -ne 7}
$vm = Get-VM -Name $vmNames[0]
$scsi = Get-ScsiController -VM $vm -Name 'SCSI controller 0'
$scsiBus = $scsi.ExtensionData.BusNumber
$scsiKey = $scsi.Key
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
for($db = 1; $db -le $nrDB; $db++){
if($db -gt 1){
$scsiBus = $scsiBus + 1
$scsiKey = -(200 + $db)
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$controller = New-Object VMware.Vim.ParaVirtualSCSIController
$controller.Key = $scsiKey
$controller.BusNumber = 1
$dev.Device = $controller
$spec.DeviceChange += $dev
}
for($hd = 1;$hd -le $nrDisk; $hd++){
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$disk = New-Object VMware.Vim.VirtualDisk
$back = New-Object VMware.Vim.VirtualDiskFlatVer2BackingInfo
$back.FileName = ''
$back.ThinProvisioned = $true
$back.DiskMode = 'independent_persistent'
$disk.Key = -($db * 100 + $hd)
$disk.ControllerKey = $scsiKey
$disk.CapacityInKB = $diskSizeGB*1GB/1KB
$disk.UnitNumber = $diskUnitNr[$hd - 1]
$disk.Backing = $back
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$dev.FileOperation = [VMware.Vim.VirtualDeviceConfigSpecFileOperation]::create
$dev.Device = $disk
$spec.DeviceChange += $dev
$extra = New-Object VMware.Vim.OptionValue
$extra.key = "scsi$($scsiBus):$($diskUnitNr[$hd - 1]).sharing"
$extra.Value = "multi-writer"
$spec.ExtraConfig += $extra
}
}
$vm.ExtensionData.ReconfigVM($spec)
$hdNames = Get-VM -Name $vmNames[0] | Get-HardDisk | where{$_.Name -ne 'Hard disk 1'} | Select -ExpandProperty FileName
$vm = Get-VM -Name $vmNames[1]
$scsi = Get-ScsiController -VM $vm -Name 'SCSI controller 0'
$scsiBus = $scsi.ExtensionData.BusNumber
$scsiKey = $scsi.Key
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
for($db = 1; $db -le $nrDB; $db++){
if($db -gt 1){
$scsiBus = $scsiBus + 1
$scsiKey = -(200 + $db)
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$controller = New-Object VMware.Vim.ParaVirtualSCSIController
$controller.Key = $scsiKey
$controller.BusNumber = 1
$dev.Device = $controller
$spec.DeviceChange += $dev
}
for($hd = 1;$hd -le $nrDisk; $hd++){
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$disk = New-Object VMware.Vim.VirtualDisk
$back = New-Object VMware.Vim.VirtualDiskFlatVer2BackingInfo
$back.FileName = $hdNames[($db - 1) * $nrDisk + ($hd - 1)]
$back.ThinProvisioned = $true
$back.DiskMode = 'independent_persistent'
$disk.Key = -($db * 100 + $hd)
$disk.ControllerKey = $scsiKey
$disk.UnitNumber = $diskUnitNr[$hd - 1]
$disk.Backing = $back
$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$dev.Device = $disk
$spec.DeviceChange += $dev
$extra = New-Object VMware.Vim.OptionValue
$extra.key = "scsi$($scsiBus):$($diskUnitNr[$hd - 1]).sharing"
$extra.Value = "multi-writer"
$spec.ExtraConfig += $extra
}
}
$vm.ExtensionData.ReconfigVM($spec)