Использовать динамический пароль для сжатия файлов - PullRequest
0 голосов
/ 02 мая 2018

Я создал скрипт 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
}

1 Ответ

0 голосов
/ 02 мая 2018

Попробуйте это:

& $RarApp a $($Destination + $ZipFileName) $($files.FullName) -m0 "-hp$zipFilePassword" -df -ep

Проблема в том, что анализатор PowerShell считает, что параметры, которые вы пытаетесь передать rar.exe, могут быть параметрами для команды ScriptBlock или PowerShell, поэтому он считает, что есть параметр переключателя, буквально называемый -hp$zipFilePassword, поэтому он не разверните его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...