Я создал сценарий 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
}