Here is the code I wrote in order to get around the odd little bug.
#-------------------------------VHD CREATION-------------------------------------#
#Create a VHD with a size of 3MB to get around variable bug
New-VHD -Path $vhdpath -SizeBytes 3MB -Fixed
#Resize to target dir + extra
Resize-VHD -Path $vhdpath -SizeBytes $size
#Mount/Format and Recursively Copy Items
Mount-VHD $vhdpath -Passthru | Initialize-Disk -Passthru | New-Partition -UseMaximumSize |
Format-Volume -FileSystem NTFS -NewFileSystemLabel $volumename -Confirm:$false
$drive = gwmi win32_volume -Filter "DriveLetter = null"
$drive.DriveLetter = "B:"
$drive.Put()
Copy-Item -Force -Recurse -Verbose $dir -Destination "B:\" -ea SilentlyContinue
#Dismount
Dismount-VHD $vhdpath