function remove-HD { param($VMname, $HDname, $Delflag) $vm = Get-View (Get-VM $VMname).ID foreach($dev in $vm.Config.Hardware.Device){ if ($dev.DeviceInfo.Label -eq $HDname){ $key = $dev.Key $name = $dev.Backing.FileName } } $spec = New-Object VMware.Vim.VirtualMachineConfigSpec $spec.deviceChange = @() $spec.deviceChange += New-Object VMware.Vim.VirtualDeviceConfigSpec $spec.deviceChange[0].device = New-Object VMware.Vim.VirtualDevice $spec.deviceChange[0].device.key = $key $spec.deviceChange[0].operation = "remove" $vm.ReconfigVM_Task($spec) if ($Delflag){ $svcRef = new-object VMware.Vim.ManagedObjectReference $svcRef.Type = "ServiceInstance" $svcRef.Value = "ServiceInstance" $serviceInstance = get-view $svcRef $vdiskMgr = Get-View $serviceInstance.Content.VirtualDiskManager $datacenter = (Get-View (Get-VM $VMname | Get-Datacenter).ID).get_MoRef() $vdiskMgr.DeleteVirtualDisk_Task($name, $datacenter) } } $vc = Read-Host "Enter Virtual Center" $vm = Read-Host "Enter VM" Connect-VIServer $vc $vmhost = Get-VM $vm | Get-VMHost Disconnect-VIServer -Confirm:$false Connect-VIServer $vmhost $hardisk = Read-Host "Enter "Hard Disk #"" remove-HD $vm $hardisk $true Disconnect-VIServer -Confirm:$false