# USE AT YOUR OWN RISK :: VALIDATE ALL RESULTS $maxfiles = 0 $argErr = $false if ($args.Length -eq 3) { $maxfiles = [int] $args[2] } else { $argErr = $true } $srcFldr = $args[0] if (-not (Test-Path $srcFldr)) { Write-Host "Source folder is not valid." $argErr = $true } $dstFldr = $args[1] if (-not (Test-Path $dstFldr)) { Write-Host "Destination folder is not valid." $argErr = $true } if ($argErr) { Write-Host "archive.ps1 [source folder] [destination folder] [archive max count (0=all)]" exit 1 } $datetime = Get-Date -uformat "%Y-%m-%dT%H%M%S" $backup = "$dstFldr\PDXpert-$datetime" New-Item $backup -type directory $logfile = "$backup\robocopy.log" robocopy $srcFldr $backup /E /LOG:$logfile if ($lastexitcode -ge 8) { Write-Host " " Write-Host "************ ARCHIVE FAILURE *************" -foregroundcolor red Write-Host " ROBOCOPY ERROR CODE: $lastexitcode" -foregroundcolor red Write-Host "******************************************" -foregroundcolor red Write-Host " " exit 1 } if ($maxFiles -gt 0) { $dirs = Get-ChildItem $dstFldr | Where {$_.psIsContainer -eq $true} | Sort-Object -descending $count = 1 foreach ($dir in $dirs) { if ($dir.ToString().StartsWith("PDXpert-")) { if ($count -gt $maxFiles) { Remove-Item "$dstFldr\$dir" -recurse -force } $count += 1 } } }