用于清理文件夹的 Powershell 脚本

用于清理文件夹的 Powershell 脚本

我们服务器上需要每周清理一次 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

相关内容