我正在尝试使用Group-Object对不同的目录进行分组,以便删除它们但保留最近的2个。
参考:Filtering files by partial name match
此路径将始终创建具有不同名称的文件夹,您永远不知道名称是什么。所以我不能使用$_.Name -like "Folder_*"
。8
示例:在以下树中,我只想保留Folder_4
,Folder_3
,Test_4
,Test_3
。
Directory: C:\Users\ad_karendex\Documents\TEST Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 5/15/2017 2:42 PM Folder_1 d---- 5/15/2017 2:42 PM Folder_2 d---- 5/15/2017 2:42 PM Folder_3 d---- 5/15/2017 2:42 PM Folder_4 d---- 5/15/2017 2:43 PM Test_1 d---- 5/15/2017 2:43 PM Test_2 d---- 5/15/2017 2:43 PM Test_3 d---- 5/15/2017 2:43 PM Test_4
我还没有弄清楚如何在以下脚本中使用Group-Object,我仍然会收到错误:
$path = "C:\Users\ad_karendex\Documents\TEST"
Foreach-Object {
$files = Get-ChildItem -Path $path -Recurse | Where-Object {$_.PsIsContainer}
}
$keep = 9
if ($files.Count -gt $keep) {
$files | Sort-Object LastWriteTime | Select-Object -First ($files.Count - $keep) | Group-Object { $_.Name.Split('-')[0] }
Remove-Item -Recurse -Force
}