Interesting, I tried a small change, and I moved [datetime] in front of the $dt, and it seems to be working. Thanks for your help, but I'm curious why it works this way.
$now = Get-Date
Get-folder Test | Get-VM | where {$_.name -cmatch "Delete-\d\-\d\-\d"} | foreach {
[datetime]$dt=($_.name.Split("-",2)[1])
if ($dt.Month -eq $now.Month) {
Remove-VM -VM $_ -Confirm
}
}