Скрипт Powershell для удаления папок из списка - PullRequest
0 голосов
/ 16 февраля 2012

Чтобы воспользоваться этим вопросом, Сценарий PowerShell для удаления файлов из списка и вывода списка удаленных файлов , я пытаюсь выполнить нечто подобное. У меня есть список имен пользователей, которые соответствуют именам некоторых папок на нашем сетевом файловом сервере. Не для всех имен пользователей в списке будут созданы домашние папки, некоторые могут просто не существовать.

Мой псевдокод выглядит примерно так:

  • Загрузить список пользователей
  • Для каждого пользователя проверьте, есть ли у него каталог или нет
  • Если у них есть каталог, принудительно и рекурсивно удалите его

Вот код, с которым я безуспешно работал:

$Termed_Users = "C:\Data\Termed_Users.csv" 
$Home_Folders = "X:"

$UserList = Import-Csv $Termed_Users

$UserList | ForEach-Object {    
   $ID = $_.ID  
   $User_Home = $Home_Folders + "\" + $_.ID }

If ( Test-Path $User_Home ) { Remove-Item -Recurse -Force $User_Home }

1 Ответ

3 голосов
/ 16 февраля 2012

Проблема в вашей ForEach-Object трубе.

Вы постоянно переназначаете переменную $User_Home и циклически просматриваете весь список, прежде чем пытаться что-либо удалить. Переместите удаление в этот блок скрипта:

$UserList | ForEach-Object {    
   $ID = $_.ID  
   $User_Home = $Home_Folders + "\" + $_.ID
   Remove-Item -recurse -force $User_Home -erroraction silentlycontinue }

Я также удалил тест, поскольку он не имеет значения - вы попытаетесь удалить их все и проигнорировать ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...