Я довольно новичок в Powershell в целом, я сталкивался с некоторыми частичными решениями, но не могу найти подходящую. В идеале я хотел бы архивировать (Zip) с помощью Powershell, но только файлы определенного возраста (x дней / месяцев), но я бы предпочел сохранить структуру папок и добавить исключения. Вот что я пытался использовать (без успеха):
$inputFolder = "C:\Temp\Test"
$excludeFolders = @("\subfolderToKeep")
$ouputFileName="C:\Temp\archive.zip"
$Daysback = "-5"
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
$tempFolder = [System.IO.Path]::GetTempFileName()
Remove-Item $tempFolder -Force
New-Item -Type Directory -Path $tempFolder -Force
$exclude =@()
$excludeFolders | ForEach-Object {
$exclude+=(Join-Path $inputFolder $_)
Get-ChildItem (Join-Path $inputFolder $_) -Recurse |
ForEach-Object{$exclude+=$_.FullName}}
Get-ChildItem $inputFolder -Recurse | Where-Object { $_.FullName -notin $exclude -and $_.LastWriteTime -lt $DatetoDelete } |
Copy-Item -Destination {Join-Path $tempFolder $_.FullName.Substring($inputFolder.length)}
Get-ChildItem $tempFolder |
Compress-Archive -DestinationPath $ouputFileName -Update
Текущая настройка будет работать без фильтрации даты:
-и $ _. LastWriteTime -lt $ DatetoDelete