我通过远程计算机在共享的Windows 2008 R2服务器上运行PowerShell脚本。该脚本应该删除超过45天的空文件夹。但是删除第一个文件夹的时间太长了。
然而 - 我会承认文件夹树非常复杂,总共有多达17k个文件夹,其中包含60k +文件和几个复杂的分支。
我在大约17个小时前运行了这个,但仍然没有看到一个文件夹被删除。
Get-ChildItem -LiteralPath $Delete_APAC -Force -Exclude $Keep_this_folder , $Keep_this_folder2 , $Keep_this_folder3 , $Keep_this_folder4 -Recurse|Where-Object {$_.PSIsContainer -and @(Get-ChildItem -LiteralPath $_.Fullname -Force -Recurse).Count -eq 0 -and ($_.LastWriteTime -lt $regional_limit -or $_.CreationTime -lt $regional_limit)}|Remove-Item -Recurse -Force -Verbose
我的猜测是脚本首先列出了所有空文件夹的列表,因为当我从远程组件映射到共享驱动器并运行脚本而没有删除项目时,它仍然需要时间。但是,当我删除第二个管道时 - 它立即开始列出文件夹。虽然在开头的驱动器中有一个超过45天的空文件夹 - 那么为什么它没有立即列出那个?
这是我在同一环境中运行的另一篇文章,用于删除超过30天的文件 - 由于文件量巨大,这也需要时间。但是,即使文件数量大约是文件夹数量的3-4倍,它也不会花费很长时间(一旦找到要删除的文件就开始删除)。这是文件删除部分 -
Get-Item -Path $Delete_APAC -Force -exclude $Keep_this_folder,$Keep_this_folder2|Get-ChildItem -Recurse|Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $regional_limit}|Remove-Item -Recurse -Force -Verbose
是否有人可以建议对此脚本进行改进,以便在可能的情况下使脚本更快?