Whatever you're doing, you're doing it wrong. Your script, with my suggestion and a modification to the Get-ChildItem cmdlet, works.
$date = Get-Date -Format yyyyMMddHHmmssffffff
$Path = "C:\TEST"
Get-ChildItem -Path "$Path\*" -Filter *.txt -File |
ForEach-Object {
$parts = $_.Name -split "_"
if ($parts.count -eq 4){
$newname = "{0}_{1}_{2}_{3}_{4}" -f $parts[0], $date, $parts[1], $parts[2], $parts[3]
Write-Host $NewName
Rename-Item -Path $_.FullName -NewName $NewName
}
else{
Write-Host "Skipping file " $_.Name -ForegroundColor Yellow
}
}