2

Необходимо еженедельно очищать почтовые ящики учетных записей пользователей FTP на нашем сервере, и для него определено около 50 учетных записей пользователей. Ниже приведен пример структуры папок почтового ящика пользователя FTP, каждая из которых включает в себя около 5 подпапок, причем одна из них во ВСЕХ именуется из них как "архив".

Я пытаюсь найти способ удалять содержимое подпапок на еженедельной основе ; однако я хотел бы исключить удаление чего-либо из ЛЮБОГО из "архивных" именованных подпапок (сохранение их содержимого на месте) в любом из почтовых ящиков FTP учетной записи пользователя.

Пример структуры папок почтового ящика FTP

C:\ftp\ftp-users  --> Root Level
         \jmartin --> Mailbox User Account Root Level
            \jmartin-a1 --> Mailbox subfolder
            \jmartin-a2 --> Mailbox subfolder
            \jmartin-a3 --> Mailbox subfolder
            \jmartin-a4 --> Mailbox subfolder
            \jmartin-a5 --> Mailbox subfolder
            \archive    --> DO NOT TOUCH --> Mailbox subfolder

1 ответ1

1

Скрипт Powershell для очистки папок

Я пытаюсь найти способ удалять содержимое подпапок на еженедельной основе; однако я хотел бы исключить удаление чего-либо из ЛЮБОГО из "архивных" именованных подпапок (сохранение их содержимого на месте) в любом из почтовых ящиков FTP учетной записи пользователя.

Вы можете выполнить это с помощью простой логики сценария PowerShell, используя одну из четырех приведенных ниже, которые используют символы звездочки для подстановочных знаков файлов и / или папок.

В приведенном ниже примере логики используется Remove-Item, включая параметры -Recurse и -Exclude .

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

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


Примеры команд PowerShell

(Используйте ниже, чтобы удалить все файлы с расширением файла ниже C:\ftp\ftp-users\*\*\~ исключая ЛЮБЫЕ подпапки с именем "Архив" и его содержимое почтовых ящиков FTP на этом уровне)

Remove-Item "C:\ftp\ftp-users\*\*\*.*" -Recurse -Exclude "Archive" -Force

(Используйте ниже, чтобы удалить все файлы и все подпапки ниже C:\ftp\ftp-users\*\*\~ исключая ЛЮБУЮ подпапку с именем "Архив" и ее содержимое почтовых ящиков FTP на этом уровне)

Remove-Item "C:\ftp\ftp-users\*\*\*" -Recurse -Exclude "Archive" -Force

(Используйте ниже, чтобы удалить все файлы и все подпапки ниже C:\ftp\ftp-users\*\~ исключая подпапку с именем "Архив" и ее содержимое почтовых ящиков FTP на этом уровне)

Remove-Item "C:\ftp\ftp-users\*\*" -Recurse -Exclude "Archive" -Force

(Используйте приведенное ниже, чтобы удалить все файлы с расширением ниже C:\ftp\ftp-users\*\~ и ничего более, так что он не затронет ЛЮБЫЕ подпапки почтовых ящиков FTP на этом уровне, поэтому параметр -Exclude отсутствует)

Remove-Item "C:\ftp\ftp-users\*\*.*" -Recurse -Force

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .