On new-harddisk why are you specifying the actual disk path? Why not specify just the datastore?
Try this to get the datastore name and put it on the same datastore:
$HDDfile = Get-HardDisk -VM $vmname | Where-Object {$_.Name -ne 'Hard Disk 1'} | select Filename
$datastorename =$HDDfile.split("[]")[1]
Get-HardDisk -VM $vmname | Where-Object {$_.Name -ne 'Hard Disk 1'} | Remove-Harddisk -Confirm:$false
New-HardDisk -VM $vmname -Datastore $datastorename
You also have to specify the size of hte disk. so -capacityGB. Don't know if they will all be same size or not but you can get that info as well and pass it or hardcode it.