$ _ refere-se ao objeto de arquivo. Não para o nome do arquivo. Eu suspeito que isso apenas escorregou na sua mente, uma vez que você se refere a $ _. Fullname para o -Path. Tente referenciar o nome em vez do objeto quando você renomeá-lo:
Get-ChildItem "D:\New Folder" -Filter *.txt |
foreach-object -process {rename-item -path $_.FullName -newname ($_.Name.Remove(0,3))}