我需要一个脚本来搜索根目录(例如C:\ inetpup \ wwwroot \ Listings)并查找所有具有单词" ImageCache"的子目录。在目录名称(例如114WestImageCache,214OakImageCache等)中,然后删除里面的所有文件那些超过30天的目录。到目前为止我最接近的是:
dir C:\inetpup\wwwroot\Listings\ | where {$_.name -ne 'ImageCache'}| Remove-Item -Recurse -force
但是除了一个名为" ImageCache"的目录外,它还会删除所有内容(无论日期如何)。我想把目录单独留下,而不是#34; ImageCache"在他们的名字中,只删除在里面的文件超过30天的ImageCache目录。有人可以帮帮我吗?
答案 0 :(得分:0)
以下脚本将为您完成。
Get-ChildItem -Path "C:\inetpub\wwwroot\Listings" -Recurse -Force | ? { $_.DirectoryName -like "*ImageCache*" -and $_.CreationTime -lt (Get-Date).AddDays(-1)} | % { $_.Delete() }
?
子句检查DirectoryName
对包含您要查找的字符串的任何内容。这也将在ImageCache目录的子目录中命中文件,希望你喜欢什么。它还检查CreationTime
小于当前日期减去一天 - 也就是说,超过一天。 %
然后删除所有匹配项 - 如果要先测试它,请删除它。