我想包含(并因此删除)超过30天的所有文件。另外,我希望保留最旧的文件。
$Exclusion = (Get-ChildItem "$PATH" -Recurse | where {$_.Name -like "*.conf"} | Sort-Object CreationTime -Descending | Select-Object -Last 1).name
Get-ChildItem "\\$PATH" -Recurse | Where {$_.creationtime -lt (Get-Date).AddDays(-30)} | Remove-Item -Force -Include *.conf -Exclude $Exclusion
这不起作用。我最旧的文件也被删除了。我的错误在哪里,或者如果两者都是.conf文件,我不能将include和exclude结合起来?
答案 0 :(得分:1)
为什么不按年龄下降和-skip 1
(最旧的文件)对对象进行排序。
我认为像这样的代码应该有用。
Get-ChildItem "\\$PATH" -Recurse | Where {$_.creationtime -lt (Get-Date).AddDays(-30)} |Sort-Object creationtime -desc | select-object -skip 1 | Remove-Item -Force -Include *.conf -Exclude $Exclusion
我这里没有PowerShell进行测试。