У меня есть скрипт, который будет создавать резервные копии файлов за 100 дней go и будет создавать резервные копии файлов за 5 дней для исходной резервной копии. Затем мне нужно будет запускать скрипт каждый день для резервного копирования любых новых файлов. Я пытаюсь увидеть, существует ли какой-либо файл и переименовать его с помощью временной метки. Я не уверен, что пойду правильно. Что я могу сделать, чтобы улучшить мой сценарий? Любая помощь будет оценена.
function BackupArtifacts {
Param(
$SourceFile,
$Destination,
$StartRange,
$NumberOfDaysCopied
)
$NewFileName = $FileName_ + $TimeStamp
New-Item -ItemType Directory -Force -Path $Destination
$count = 0
foreach ($fileList in Get-ChildItem $SourceFile -recurse)
{
if ($fileList.LastWriteTime -ge (Get-Date).AddDays($StartRange) -and $fileList.LastWriteTime -le (Get-Date).AddDays($StartRange + $NumberOfDaysCopied)) #Go back 100 days and copy 5 days worth of files
{
#Check if file already exists and if it does then rename it
If (Test-Path ($Destination, $NewFileName) -join "")
{
While (Test-Path @($Destination, $NewFileName) -join "")
{
$NewFileName = "$NewFileName_ + $TimeStamp"
}
Rename-Item -Path ( ($Destination) -join '') -NewName ($NewFileName)
}
try {
#Copy-Item $fileList.FullName -Destination $Destination -Recurse
Copy-Item -Path $SourceFile -Destination (@($Destination,$NewFileName) -join "") -Force
Write-Host $fileList.FullName
$count ++
} catch {
Write-Error $_
}
}
}
Write-Host "Backup complete, Number of files backed up:" $count
}
$SourceFile = "C:\TempCopy"
$TimeStamp = Get-Date -f dd_MM_yyyy
$Destination = "C:\TempCopyBackUp_" + $TimeStamp
$StartRange = "-100"
$NumberOfDaysCopied = "5"
BackupArtifacts $SourceFile $Destination $StartRange $NumberOfDaysCopied