【问题标题】:Compress Multiple Files\Folders and encrypt zip with password via Powershell通过 Powershell 压缩多个文件\文件夹并使用密码加密 zip
【发布时间】:2022-01-12 15:31:58
【问题描述】:

我正在尝试在 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(除非我对该导出有误)

对此有什么想法吗?

谢谢!

【问题讨论】:

  • 我相信 7zip 会比 io.compression 更好的解决方案。
  • AFAIK 无法使用 .Net 创建带密码的 zip 文件。你可以看看7zip。其中的commandline version 有一个参数-p 用密码压缩。
  • 好吧,我现在已经做到了,但我仍然在为生成随机密码而苦恼……有没有办法?尝试为每个人创建随机生成的密码,然后将其导出到 csv 文件
  • 好吧,看来我成功了。将所有内容导出到 csv 文件仍有一些问题,但我有一些解决方法。

标签: powershell file zipfile 7zip


【解决方案1】:

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

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

Add-Type -AssemblyName System.Web
$7z = ("C:\Program Files\7-Zip\7z.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"
    & $7z "a" "-mx=9" "$Target" "$Source" "-p$pass" | Export-CSV -Path "\\path_to_store_pass\passwords.csv"
    echo $subfolder, $pass
}
 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 2018-09-30
    • 2010-12-26
    • 1970-01-01
    相关资源
    最近更新 更多