删除超过一年的备份文件,除本月外,除了本月底



我有一个我正在编写的powershell脚本,我需要在本月,本月结束时保留每日备份,除此之外。P>

$ThisYear = (Get-Date).year
$DailyLogs = (Get-Date).month
#Clean-Up Old Backup Files
Get-ChildItem 'D:' | ForEach-Object {
    if ( $_.LastWriteTime.Year -gt $ThisYear) {
        Remove-Item
    }
    Elsif ( $_.LastWriteTime.Month -gt $ThisMonth -and $_.LastWriteTime.Date -ne ) {
        Remove-Item
    }

到目前为止,这应该删除本年份不是本年度的任何备份文件。我要解决的文章是如何删除每日备份,除了本月后每个月的备份文件之外。我对如何将-ne到任何给定月份的最后一天很坚持。

编辑:

#Clean-Up Old Backup Files
Get-ChildItem 'D:Server Backup' | ForEach-Object {
    if ( $_.LastWriteTime.Year -gt $ThisYear) {
        Remove-Item
    }
    Elsif ( $_.LastWriteTime.Month -gt $ThisMonth -and $_.LastWriteTime.Date -ne [System.DateTime]::DaysInMonth($_.LastWriteTime.Year, $($_.LastWriteTime.Month))) {
        Remove-Item
    }
}

基于李的评论,这是我的想法。

替代30天滚动和本月开始:

$RollingYear = (Get-Date).AddDays(-365)
$Rolling30Days = (Get-Date).AddDays(-30)
    if ( $_.LastWriteTime.AddDays(-365) -lt $RollingYear) {
        Remove-Item
    }
    Elseif ( $_.LastWriteTime.AddDays(-30) -lt $Rolling30Days -and $_.LastWriteTime.Date -ne (Get-Date -Year $_.LastWriteTime.Year, -Month $_.LastWriteTime.Month -Day 1)) {
        Remove-Item
    }

我相信这就是您要寻找的:

param($Path)
$Now = (get-date)
$ThisYear = $Now.AddYears(-1).Year
#Clean-Up Old Backup Files
Get-ChildItem $path | ForEach-Object {
    if ( $_.LastWriteTime.Year -lt $ThisYear) 
    {
        write-output "-- would have deleted $($_.fullname) $($_.LastWriteTime.DateTime)"
    }
    Elseif ($_.LastWriteTime.Day -ne [System.DateTime]::DaysInMonth($_.LastWriteTime.Year, $($_.LastWriteTime.Month)))
    {
      write-output "would have deleted $($_.fullname) $($_.LastWriteTime.DateTime)"
    }
    else
    {
        Write-Output "saved $($_.FullName) $($_.LastWriteTime.DateTime)"
    }
}

我以为您想从剧本运行之日起12个月。

我用它来测试您的脚本:

for ($i = 1; $i -lt 500; $i++)
{ 
    new-item "$i.txt"
    (Get-ChildItem "$i.txt").lastwritetime = (get-date).AddDays(-$i)
}

我评论了前两个书面输出,这是我的结果:

saved C:temptemp103.txt Friday, November 30, 2018 9:38:00 PM
saved C:temptemp13.txt Thursday, February 28, 2019 9:37:59 PM
saved C:temptemp133.txt Wednesday, October 31, 2018 9:38:00 PM
saved C:temptemp164.txt Sunday, September 30, 2018 9:38:00 PM
saved C:temptemp194.txt Friday, August 31, 2018 9:38:00 PM
saved C:temptemp225.txt Tuesday, July 31, 2018 9:38:00 PM
saved C:temptemp256.txt Saturday, June 30, 2018 9:38:00 PM
saved C:temptemp286.txt Thursday, May 31, 2018 9:38:00 PM
saved C:temptemp317.txt Monday, April 30, 2018 9:38:01 PM
saved C:temptemp347.txt Saturday, March 31, 2018 9:38:01 PM
saved C:temptemp378.txt Wednesday, February 28, 2018 9:38:01 PM
saved C:temptemp406.txt Wednesday, January 31, 2018 9:38:01 PM
saved C:temptemp41.txt Thursday, January 31, 2019 9:37:59 PM
saved C:temptemp72.txt Monday, December 31, 2018 9:37:59 PM

最新更新