Remove-Item принимает ввод по каналу, поэтому ForEach не требуется.
Если вывод выглядит нормально, удалите -WhatIf
locations=import-csv "C:\Temp\Scripts\AgeOffDirsGeneral.csv"
foreach ($location in $locations){
$Source=$location.Source
Get-ChildItem $source -Dir -Recurse|
Where-Object { $_.Name -match '^\d+$'} |
Remove-Item -Force -WhatIf
}
Кстати, промежуточную переменную $ source можно было бы избежать, вставив $ location напрямую.Source