Я хочу автоматизировать процесс архивирования (включая архивирование и удаление) только за предыдущий день.У меня есть скрипт, который запускается каждый день и который выполняет архив, но я могу установить его только на несколько дней, выбор только одного дня все еще остается проблемой.
Я установил пару фиксированных переменных ($archiveyear
, $archivemonth
, $archiveday
), которые фактически позволяют мне архивировать в день, но это мне нужно менять каждый день вручную.
$ArchiveYear = "2018"
$ArchiveMonth = "06"
$ArchiveDay = "06"
$SourcePath = "C:\aa\bb\x"
$TargetPath = "C:\ab"
$YourDirToCompress = "C:\aa\bb\$ArchiveYear\$ArchiveMonth\$ArchiveDay"
$ZipFileResult = "C:\TestDestination\$ArchiveDay$ArchiveMonth.zip"
Get-ChildItem $YourDirToCompress -Directory |
#where { $_.Name -notin $DirToExclude} |
Compress-Archive -DestinationPath $ZipFileResult -Update
$Days = "1"
$LogPath = "C:\Temp"
$Date = Get-Date -format yyyy-MM-dd_HH-mm
$TargetFolder = "$TargetPath\$Date"
$LogFile = "$LogPath\ArchiveLog-$date.txt"
$TargetZipFile = "$TargetPath\$Date.zip"
$Activity = "Move files older than $Days days from $SourcePath to $TargetFolder"
Write-Verbose $Activity
$OldFiles = Get-Childitem -Path $SourcePath -recurse | Where-Object {$_.LastWriteTime -lt (get-date).AddDays( - $days)}
$Total = $Oldfiles.Count
$Current = 0
$OldFiles | ForEach {
$Current ++
$Filename = $_.fullname
Write-Progress -Activity $Activity -Status $FileName -PercentComplete ($Current / $Total * 100)
$Split = $FileName -split '\\'
$DestFile = $split[1..($split.Length - 1)] -join '\'
$DestFile = "$TargetFolder\$DestFile"
Try {
$null = New-Item -Path $DestFile -Type File -Force
$Null = Move-Item -Path $FileName -Destination $DestFile -Force -ErrorAction:SilentlyContinue
"Successfully moved $filename to $targetfolder" | add-content $LogFile
}
Catch {
$Err = $_.Exception.Message
Write-Error $Err
"Error moving $filename`: $Err " | add-content $LogFile
}
}