You are missing a backslash in the path.
A common problem that I see on these forums is that folks who are new to PS string together multiple cmdlets in one long pipeline and don't understand what it's doing when they don't get the results that they expect. While pipelines are great, if you are starting out, be verbose so that you can understand more about the object that you are dealing with. Like this.
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
$Path = $Drive.Name + ‘:\$RECYCLE.BIN’
"Testing {0}" -f $path
$files = Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue
foreach ($f in $files) {
"{0} - {1}" -f $f.name, $f.lastwritetime
if ( $f.LastWriteTime -lt (Get-Date).AddDays(-7)) {
" Delete the above file."
$f | Remove-Item -Recurse -Force -whatif
}
}
}