Hi
I'm trying to run a simple script. I would expect 3 disks with 3 ParaVirtual adapters
Get-VM <yourvm> | New-HardDisk -CapacityGB 10 | New-ScsiController -Type ParaVirtual Get-VM <yourvm> | New-HardDisk -CapacityGB 20 | New-ScsiController -Type ParaVirtual Get-VM <yourvm> | New-HardDisk -CapacityGB 30 | New-ScsiController -Type ParaVirtual
But the result is as follows. Here I expect an adapter for each disk
What am I doing wrong?
My goal would be 3 Paravirtual controllers with 5 disks.
Distribute these over the 3 controllers.
I would then assign it as follows:
Get-VM <yourvm> | New-HardDisk -CapacityGB 15 -Datastore $datastoreVM -Controller "SCSI-Controller 1"
But if the script at the top doesn't work, I can't get any further.
Thanks
This seems to work for me.
Is that VM powered on?
Which PowerCLI version are you using?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi @LucD
VM is powered off.
Powercli Version:
*****
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 6.7.0.1... VMware.DeployAutomation {Add-DeployRule, Add-ProxyServer, Add-ScriptBundle, Copy-DeployRule...}
Script 6.7.0.1... VMware.ImageBuilder {Add-EsxSoftwareDepot, Add-EsxSoftwarePackage, Compare-EsxImageProfile, Export-EsxImageProfile...}
Manifest 11.5.0.... VMware.PowerCLI
Script 6.7.0.1... VMware.Vim
Script 11.5.0.... VMware.VimAutomation.Cis.Core {Connect-CisServer, Disconnect-CisServer, Get-CisService}
Script 11.0.0.... VMware.VimAutomation.Cloud {Add-CIDatastore, Connect-CIServer, Disconnect-CIServer, Get-Catalog...}
Script 11.5.0.... VMware.VimAutomation.Common {Get-Task, Stop-Task, Wait-Task}
Script 11.5.0.... VMware.VimAutomation.Core {Add-PassthroughDevice, Add-VirtualSwitchPhysicalNetworkAdapter, Add-VMHost, Add-VMHostNtpServer...}
Script 11.5.0.... VMware.VimAutomation.Hcx {Connect-HCXServer, Disconnect-HCXServer, Get-HCXAppliance, Get-HCXComputeProfile...}
Script 7.10.0.... VMware.VimAutomation.HorizonView {Connect-HVServer, Disconnect-HVServer}
Script 11.3.0.... VMware.VimAutomation.License Get-LicenseDataManager
Script 11.5.0.... VMware.VimAutomation.Nsxt {Connect-NsxtServer, Disconnect-NsxtServer, Get-NsxtPolicyService, Get-NsxtService}
Script 11.5.0.... VMware.VimAutomation.Sdk {Get-ErrorReport, Get-PSVersion, Get-InstallPath}
Script 11.0.0.... VMware.VimAutomation.Security {Get-SecurityInfo, Get-VTpm, Get-VTpmCertificate, Get-VTpmCSR...}
Script 11.5.0.... VMware.VimAutomation.Srm {Connect-SrmServer, Disconnect-SrmServer}
Script 11.5.0.... VMware.VimAutomation.Storage {Add-KeyManagementServer, Add-VsanObjectToRepairQueue, Copy-VDisk, Export-SpbmStoragePolicy...}
Script 1.3.0.0 VMware.VimAutomation.StorageUtility Update-VmfsDatastore
Script 11.2.0.... VMware.VimAutomation.Vds {Add-VDSwitchPhysicalNetworkAdapter, Add-VDSwitchVMHost, Export-VDPortGroup, Export-VDSwitch...}
Script 11.5.0.... VMware.VimAutomation.Vmc {Add-VmcSddcHost, Connect-Vmc, Disconnect-Vmc, Get-AwsAccount...}
Script 10.0.0.... VMware.VimAutomation.vROps {Connect-OMServer, Disconnect-OMServer, Get-OMAlert, Get-OMAlertDefinition...}
Script 6.5.1.7... VMware.VumAutomation {Add-EntityBaseline, Copy-Patch, Get-Baseline, Get-Compliance...}
***
vCenter Version is 7.0.3
The only special thing is, it`s a 6.7 ESXi hosts (I know I know).
That is a relatively "old" PowerCLI version, I would definitely suggest upgrading.
The ESXi version shouldn't make a difference,
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Same problem with newer Version 😞
Manifest 12.7.0.... VMware.PowerCLI
Can you try with the API method, just to eliminate it is not a vSphere issue.
$vm = Get-VM -Name <yourVM>
$ctrl = Get-ScsiController -VM $vm
$busNr = $ctrl.ExtensionData.BusNumber | Sort-Object -Descending | Select-Object -First 1
$hdSize = 10,20,30
$scsiKey = -1
$hdKey = -100
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$hdSize | ForEach-Object -Process {
$busNr++
$ctrl = New-Object VMware.Vim.VirtualDeviceConfigSpec
$ctrl.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$controller = New-Object VMware.Vim.ParaVirtualSCSIController
$controller.Key = $scsiKey
$controller.BusNumber = $busNr
$ctrl.Device = $controller
$spec.DeviceChange += $ctrl
$hd = New-Object VMware.Vim.VirtualDeviceConfigSpec
$hd.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::add
$hd.FileOperation = [VMware.Vim.VirtualDeviceConfigSpecFileOperation]::create
$disk = New-Object VMware.Vim.VirtualDisk
$disk.Key = $hdKey
$disk.ControllerKey = $scsiKey
$disk.CapacityInKB = $_ * 1GB / 1KB
$disk.UnitNumber = 0
$back = New-Object VMware.Vim.VirtualDiskFlatVer2BackingInfo
$back.DiskMode = [VMware.Vim.VirtualDiskMode]::persistent
$back.FileName = ''
$back.EagerlyScrub = $false
$back.ThinProvisioned = $true
$disk.Backing = $back
$hd.Device = $disk
$spec.DeviceChange += $hd
$scsiKey--
$hdKey--
}
$vm.ExtensionData.ReconfigVM($spec)
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Crazy. That goes straight away.
My design or assignment should look something like this, is this also possible via the API?
Where C:\ (system) and D:\ are created beforehand. It`s about E:\ - I:\
C:\ 0:0
D:\ 0:1
E:\ 1:2
F:\ 2:2
G:\ 2:0
H:\ 3:2
I:\ 3:0
Those partitions are created inside the Guest OS, that is not something PowerCLI or a vSphere API can do.
What you can do is use something like Invoke-VMScript to run a script inside the Guest OS.
And with that script create those partitions.
If the Guest OS is a Windows OS, you might look at PowerShell cmdlets like Get-Disk and New-Partition.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Now I expressed myself wrong.
Finally, after creating the controller and creating the disk, the VM "shell" should look like this.
We can do the rest with staging (in the OS)
I don't see what the issue is then with the code I provided.
With the unit- and bus-number you can specify where each new harddisk should go.
Since you went from 3 harddisks to 6 harddisks with different sizes than the original entry in this thread, you will have to adapt the data (disksize and number of entries).
You can also code the bus- and unit-number in a data array.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference