Проблема в вашей ForEach-Object
трубе.
Вы постоянно переназначаете переменную $User_Home
и циклически просматриваете весь список, прежде чем пытаться что-либо удалить. Переместите удаление в этот блок скрипта:
$UserList | ForEach-Object {
$ID = $_.ID
$User_Home = $Home_Folders + "\" + $_.ID
Remove-Item -recurse -force $User_Home -erroraction silentlycontinue }
Я также удалил тест, поскольку он не имеет значения - вы попытаетесь удалить их все и проигнорировать ошибки.