Как разобрать дату в PowerShell?

Я пишу скрипт, который удаляет резервные копии старше пяти дней. Я проверяю это по имени каталога, а не по фактической дате.

Как проанализировать имя каталога на дату, чтобы сравнить их?

Часть моего скрипта:

...

foreach ($myDir in $myDirs)
{
  $dirName=[datetime]::Parse($myDir.Name)
  $dirName= '{0:dd-MM-yyyy}' -f $dirName
  if ($dirName -le "$myDate")
  {
        remove-item $myPath\$dirName -recurse
  }
}
...

Может я что-то не так делаю, потому что все равно не удаляются каталоги прошлого месяца.

Весь скрипт с предложениями Акима ниже:

Function RemoveOldBackup([string]$myPath)
{

  $myDirs = Get-ChildItem $myPath

  if (Test-Path $myPath)
  {
    foreach ($myDir in $myDirs)
    {
      #variable for directory date
      [datetime]$dirDate = New-Object DateTime

      #check that directory name could be parsed to DateTime
      if([datetime]::TryParse($myDir.Name, [ref]$dirDate))
      {
            #check that directory is 5 or more day old
            if (([DateTime]::Today - $dirDate).TotalDays -ge 5)
            {
                  remove-item $myPath\$myDir -recurse
            }
      }
    }
  }
  Else
  {
    Write-Host "Directory $myPath does not exist!"
  }
}

RemoveOldBackup("E:\test")

Имена каталогов, например, 09 -07 -2012, 08 -07 -2012,..., 30 -06 -2012 и 29 -06 -2012.

7
задан Peter Mortensen 28 May 2017 в 21:57
поделиться