使用Group-Object:如何保留每个目录的x号并删除所有其他目录

时间:2017-05-15 22:46:34

标签: powershell powershell-v2.0

我正在尝试使用Group-Object对不同的目录进行分组,以便删除它们但保留最近的2个。

参考:Filtering files by partial name match

此路径将始终创建具有不同名称的文件夹,您永远不知道名称是什么。所以我不能使用$_.Name -like "Folder_*"。8

示例:在以下树中,我只想保留Folder_4Folder_3Test_4Test_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
}

0 个答案:

没有答案