In order to avoid a confirmation prompt when using Remove-Item to delete a non-empty directory:
- you need the
-Recurse switch
- additionally, if the directory contains hidden items, you need the
-Force switch.
- (If the
$ConfirmPreference preference variable has been changed from its default, 'High', you'll also need -Confirm:$false)
In short:
Remove-Item -Recurse -Force $someDirectory quietly removes directory $someDirectory itself (invariably with all its contents)
Remove-Item -Recurse -Force $someDirectory\* removes just its contents (along with any subdirectories, recursively).
Caveat: In earlier Windows versions, before Windows 10 20H2, file removal is inherently asynchronous, which means that such recursive calls sometimes fail - see this answer.
Therefore, you don't even need Get-ChildItem in your case - just use Remove-Item to remove the content of the target directories, (which includes an subdirectories) - by appending wildcard expression \* - which you can even do with a single call, given that arrays of input paths are supported.
In the context of your original code:
Write-Host "Deleting all files and subfolders..."
Remove-Item -Recurse -Force -Path C:\Users\333\Downloads\*, C:\Users\333\Desktop\*, C:\Users\333\Documents\*
Clear-RecycleBin -Force
Write-Host "Done!"