Параметр -Path
Remove-Item
принимает массив строк в качестве входных данных, если вы хотите удалить более одного элемента одновременно.
Теперь с помощью синтаксиса $folder2 + $folder3
вы создаете объединенную строку как: "C:\Users\foo\Desktop\*C:\Users\foo\Desktop\*""
. Это ничто, с чем Remove-Item
может справиться.
Вы можете построить строковый массив путей следующим образом:
$folder = "C:\Users\$env:USERNAME"
$foldersToRemove = @(
"C:\Users\$env:USERNAME\Desktop",
"C:\Users\$env:USERNAME\Documents",
"C:\Users\$env:USERNAME\Contacts",
"C:\Users\$env:USERNAME\Downloads",
"C:\Users\$env:USERNAME\Favorites",
"C:\Users\$env:USERNAME\links",
"C:\Users\$env:USERNAME\Music",
"C:\Users\$env:USERNAME\OneDrive",
"C:\Users\$env:USERNAME\Pictures",
"C:\Users\$env:USERNAME\Searches",
"C:\Users\$env:USERNAME\Videos")
If (Test-Path $folder) {
Remove-Item $folder -Exclude AppData, Contacts, Desktop, Documents, Downloads, Favorites, Links, Music, OneDrive, Pictures, Searches, Videos -Force -ErrorAction SilentlyContinue
Remove-Item $foldersToRemove -Recurse -Force -ErrorAction SilentlyContinue
}
О вашем втором требовании:
Параметр -Verbose
составит Remove-Item
сказать, какие папки удалены. Если вам нужен ваш журнал в файле, вы можете перенаправить подробный поток следующим образом:
Remove-Item $foldersToRemove -Recurse -Force -ErrorAction SilentlyContinue -Verbose 4> .\deletedFolders.log