我们在Windows2016服务器上有一个Server,它创建一个.MDF和日志文件的server备份,按计划在23:30工作日备份一次。我创建了一个内务脚本来开始删除这些.bak文件,这些文件都是两个工作日以上的。
然而,星期二的检查,功能异常。在下面的脚本中,AddDays(4)保留星期一、星期五和星期四的文件,而不仅仅是星期一和星期五的文件。但如果我将其更改为AddDays(3),它只保留周一的文件。
为什么这是这样的行为?
# Determine day of week
$weekDay = (get-date).DayOfWeek.ToString()
$firstAbbrevCheck = $weekDay.SubString(0,3)
# write-host $firstAbbrevCheck
# Write date to log file to ensure sripts ran
$todaysDate = (get-date).ToString("ddMMyyyy")
Write-output $todaysDate | Out-file <path>\HouseKeepLog.txt -append
# If not a sunday or Monday then process
if($firstAbbrevCheck -ne "Sun") {
  if($firstAbbrevCheck -ne "Mon") {
    $secondAbbrevCheck = $weekDay.SubString(0,2)
    # If retaining two work days of backups then for Tuesday delete 
      files greater than 4 days old
    if($secondAbbrevCheck -eq "Tu") {
     Get-ChildItem –Path <Path to backup folder> -recurse -Filter 
       *.bak -exclude master*, msdb* | Where-Object 
      {($_.LastWriteTime -lt (Get-Date).AddDays(-4))} | Remove-Item
    }
    else {
    # Else Wed - Sat and delete files greater than 2 days old 
    Get-ChildItem –Path <Path to backup folder> -recurse -Filter 
      *.bak -exclude master*, msdb* | Where-Object 
      {($_.LastWriteTime -lt (Get-Date).AddDays(-2))} | Remove-Item
    }
  }
 }  发布于 2019-12-28 15:19:39
"Tu“不是"Tue”顺便说一下,您可以将枚举与字符串进行比较:
(get-date).dayofweek -eq 'saturday'
True
'saturday' -eq (get-date).dayofweek
TrueFyi,下面是一周中的一天的布局:
(get-date).dayofweek.gettype()               
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     DayOfWeek                                System.Enum
0..6 | foreach { [system.dayofweek]$_ } 
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturdayhttps://stackoverflow.com/questions/59511831
复制相似问题