In the first script, if all the "dummy" files are the same, just have the script create one file at the begining instead of inside the foreach loop. Then replace that line and just copy that one file into the new location determined by the foreach loop. That would save time on that one.
For the "slow script", Why are you creating your own timer instead of piping the script to Measure-Command?
Read the amount of time Measure-Command reports.
Instead of the -Filter paramter have you tried it like this to see if that effects performance or not?
$TestDir = "$($env:USERPROFILE)\TestFiles"
# Get the list of files
Get-ChildItem -Path "$TestDir\*.txt" | ForEach-Object {
# Simulate some processing
Get-Content $_.FullName | Out-Null
}