压缩多个 Files\Folders 并通过 Powershell 使用密码加密 zip

Compress Multiple Files\Folders and encrypt zip with password via Powershell

我正在尝试在 powershell 中制作一个快速脚本 这将压缩多个文件夹 (或者文件现在不重要,在我的例子中它的文件夹) 并向每个 zip 文件添加一个随机密码 并将每个 zip 文件的密码导出到 csv。

这是我目前得到的...

$path = "\path\of\folders"
$source = Get-ChildItem -Path \path\of\folders -Filter "*?" -Directory

Add-Type -assembly "system.io.compression.filesystem"

Foreach ($s in $source){
    $destination = Join-path -path $path -ChildPath "$($s.name).zip"

    If(Test-path $destination) {Remove-item $destination}

    [io.compression.zipfile]::CreateFromDirectory($s.fullname, $destination)
}

有了这个,我可以压缩主文件夹中的每个文件夹,压缩每个文件的名称。

我管理起来比较复杂的地方是如何为每个 zip 文件添加一个随机密码...然后我将添加 | Export-Csv -Path \to\my\path\passwords.csv(除非我对导出有误)

有什么想法吗?

谢谢!

设法编写出压缩和加密 zip 文件的脚本。

 if (-not (Test-Path "C:\Program Files-Zipz.exe")){
    Write-Warning "C:\Program Files-Zipz.exe needed"
}

Add-Type -AssemblyName System.Web
z = ("C:\Program Files-Zipz.exe")

foreach($subfolder in (Get-ChildItem "\path_of_directoris" -Directory))
{
    $pass =  [System.Web.Security.Membership]::GeneratePassword(10,2) 
    $Source    = $subfolder.fullname 
    $Target    = "\path_of_directoris$($subfolder.name).zip"
    & z "a" "-mx=9" "$Target" "$Source" "-p$pass" | Export-CSV -Path "\path_to_store_pass\passwords.csv"
    echo $subfolder, $pass
}