Я создал скрипт powershell для архивирования файлов старше X месяцев в каталоге. Я хотел бы сделать пароль для каждого сжатого файла разным, но это кажется довольно сложной задачей, поскольку winrar передает мою переменную через пароль вместо значения переменной. Я попытался поместить переменную в квадратные скобки, которая затем заставляет его запрашивать пароль. Также пытался поместить его в кавычки, но все равно он не работает и использует имя переменной в качестве пароля. Я попробовал это на последней версии powershell, используя кавычки, которые, кажется, работают, но проблема в том, что машина, на которой я хочу запустить это, не может быть обновлена в текущий момент из-за требований доступности сервера, таким образом, перезапуск сервера не является опцией
$SourcePath = "C:\FTP\Hollard\PrankCall"
$MonthsBack = 6
$masterPassword = "Password"
$RarApp = "C:\Program Files\WinRAR\Rar.exe"
$Source = Get-ChildItem $SourcePath -Recurse | where {($_.LastWriteTime -LT $(Get-Date).AddMonths(-$MonthsBack)) -and ($_.Directory.Name -notmatch "Archive")}
ForEach ($files in $Source) {
$Destination = [System.String]::Concat($files.Directory, "\Archive\")
$FileYear = $files.LastWriteTime.year
$FileMonth = [System.String]::Concat("0",$files.LastWriteTime.Month)
$FileMonth = $FileMonth.Substring($FileMonth.Length - 2,2)
$ZipFileName = [System.String]::Concat($files.Directory.Name,"_",$FileYear , $FileMonth,".rar")
$zipFilePassword = [System.String]::Concat($masterPassword , $FileYear , $FileMonth)
if(!(Test-Path -Path $Destination )){
New-Item -ItemType directory -Path $Destination
}
& $RarApp a $($Destination + $ZipFileName) $($files.FullName) -m0 -hp$zipFilePassword -df -ep
}