powershell删除一些超过90天的文件,但有例外

时间:2017-11-14 05:52:57

标签: powershell

$timeLimit1 = Get-Date.AddDays(-90)
Get-ChildItem <path> | ? {$_.LastWriteTime -le $timeLimit1 } | Remove-Item

所以我有更容易的部分,但我想弄清楚如何做一些更复杂的事情。

我正在设置备份删除例程。要求是保留最后90天的备份,然后是当前年度之前的每个月的最后一天,最后是12月31日前两年的备份。

除了一张支票外,我找不到任何其他例子;是否可以进行多项检查以实现自动化。

2 个答案:

答案 0 :(得分:2)

我建议编写一个自定义过滤器来应用逻辑,例如

filter MyCustomFilter{

    $File = $_

    $FileDate = $File.LastWriteTime
    $Now = (Get-Date)
    $FileAgeDays = ($Now - $FileDate).TotalDays

    if (

        # Keep files for at least 90 days
        ( $FileAgeDays -lt 91 
        ) -or

        # Keep files from last day of the month this year
        (  $FileDate.Year -eq $Now.Year -and
           $FileDate.Month -ne $FileDate.AddDays(1).Month
        ) -or

        # Keep files from 31 Dec for up to 2 years
        (   $FileAgeDays -lt ( 2 * 365 ) -and
            $FileDate.Month -eq 12 -and 
            $FileDate.Day -eq 31
        )

    ) { 

        # File should be kept, so nothing is returned by the filter

    } else { 

        # File should be deleted, so pass the file down the pipeline
        write-output $File

    }


}

现在您的整体代码看起来像这样:

get-childItem -path <path> |
    where-object { -not $_.PSIsContainer } |
    MyCustomFilter |
    Remove-Item

毋庸置疑,在生产系统上放松之前,需要进行适当的测试。

编辑:一个月最后一天的简单测试

我想到了整个月的最后一天&#39; test,它只是将被测日期的month属性与第二天的month属性进行比较,例如。

$FileDate.Month -ne $FileDate.AddDays(1).Month
如果$true是该月的最后一天,

将返回$FileDate

答案 1 :(得分:-1)

只需创建一个&#34;特殊&#34;的数组。将日期添加到过滤器中。

<!-->displaying images filenames in tabular view<--><thead>
        <tr>
        <th >#</th>
        <th >Image Name</th>
        <th >File Format</th>
        <th>Action</th>
        </tr>
    </thead><tbody>

      @foreach( $variable_declared_in_download_function as $some_random_variable)                                                     <tr>
    <td class="text-left">{{ asset('img/') }}></td>                                    <td class="text-left">{{ $jan2017->format}}</td>                                    
    <td>buttons here (delete/download)</td>
    </tr>                                                                   @endforeach
    </tbody>
    </table>
        @endsection

我还会创建一个功能来找到&#34;特殊&#34;日期。