根据修改时间删除目录

时间:2011-08-17 09:47:16

标签: powershell deployment build

我正在使用Powershell脚本在远程服务器上部署代码库。

脚本的一个主要部分将当前版本复制到服务器。现在我只需要将最后两个版本保留在远程服务器上并删除所有其他版本。

我需要保留最新的两个版本

例如: 在远程服务器中,我有

//server001/Application/
    Build_1_0_0_19
    Build_1_0_0_18
    Build_1_0_0_17
    Build_1_0_0_16

我需要在部署_17时清除构建_16_19

我们可以根据修改的时间对目录进行分类,最后两个将在最上面。休息都不是必需的。

可以通过Powershell Scripts完成吗?

P.S。构建并不总是按顺序排列

1 个答案:

答案 0 :(得分:6)

您可以这样做:

#requires -version 2
Get-ChildItem //server001/Application/|
    Sort-Object CreationTime -Descending|
    Select-Object -Skip 2|
    Remove-Item -Recurse -Confirm

只要您确定它符合您的要求,就可以删除-Confirm开关。

这是v1兼容方法:

$dirs = @(Get-ChildItem //server001/Application/)

$dirs|
    Sort-Object CreationTime -Descending|
    Select-Object -Last ($dirs.Count - 2)|
    Remove-Item -Recurse -Confirm