5日以上経過したバックアップを削除するスクリプトを作成します。実際の日付ではなく、ディレクトリの名前で確認します。
ディレクトリ名を日付に解析して比較するにはどうすればよいですか?
私のスクリプトの一部:
...
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
}
}
...
先月のディレクトリがまだ削除されていないので、何か間違ったことをしているのかもしれません。
Akimの提案を含むスクリプト全体を以下に示します。
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です。