我们服务器上需要每周清理一次 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
用于清理文件夹的 Powershell 脚本
我正在尝试找出一种每周删除子文件夹内容的方法;但是,我想排除从任何用户帐户 FTP 邮箱中的任何以“存档”命名的子文件夹(保留其内容)中删除任何内容。
您可以使用简单的 PowerShell 脚本逻辑完成此操作,使用下面我提供的四个脚本之一,使用星号作为文件和/或文件夹的通配符。
下面的示例逻辑使用除去项目包括-Recurse
和-Exclude
参数。
我认为最上面的例子(或者正下方的例子)是根据您的描述您需要的例子,但如果需要确认,请对所有进行测试。我测试并确认这些工作正常,并且与我环境中的测试文件夹预期的一样。
我建议您在您的环境中对它们进行测试,以确认在针对生产文件夹运行任何操作之前,它们能够按照您的预期工作,以防万一。
PowerShell 命令示例
(使用下面的方法删除所有具有文件扩展名的文件排除C:\ftp\ftp-users\*\*\~
此级别的 FTP 邮箱中的任何名为“Archive”的子文件夹及其内容)
Remove-Item "C:\ftp\ftp-users\*\*\*.*" -Recurse -Exclude "Archive" -Force
(使用下面的方法删除所有文件和所有子文件夹排除C:\ftp\ftp-users\*\*\~
任何名为“Archive”的子文件夹及其此级别的 FTP 邮箱内容)
Remove-Item "C:\ftp\ftp-users\*\*\*" -Recurse -Exclude "Archive" -Force
(使用下面的方法删除所有文件和所有子文件夹(不C:\ftp\ftp-users\*\~
包括名为“Archive”的子文件夹及其在此级别的 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