Удалить каталоги в зависимости от времени изменения - PullRequest
3 голосов
/ 17 августа 2011

Я использую сценарии 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?

PS Сборки не всегда в последовательном порядке

1 Ответ

6 голосов
/ 17 августа 2011

Вы можете сделать что-то вроде этого:

#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
...