【PowerShell】ファイル/フォルダをZIP形式(パスワード付き)で圧縮する【7-Zip】

PowerShellで
 ・ファイル/フォルダをZIP圧縮(パスワード付き)
できます!

PowerShellから
 ・圧縮解凍ソフト「7-Zip」を実行
することで実現できます!

7-Zipのインストール

詳細は以下の記事の「7-Zipのインストール」をご確認ください。

コード

ここでは例として
 ・デスクトップ配下の約1GBのフォルダ「test」を
 ・パスワード「hogehoge」で圧縮
 ・デスクトップ配下に圧縮ファイル「test.zip」として作成
します。

フォルダ「test」
フォルダ「test」

圧縮対象は「フォルダ」でなく「ファイル」でも大丈夫です。

# 7z.exeのパスを指定
$exe7zip = "C:\Program Files\7-Zip\7z.exe"
# 圧縮するフォルダ(またはファイル)のパスを指定
$targetPath = "C:\Users\user\Desktop\test"
# 作成するZIPファイルのパスを指定
$zipFilePath = "C:\Users\user\Desktop\test.zip"
# パスワードを指定
$password = "hogehoge"

# 7z.exeを実行する際の引数を組み立て
$arg=" a -ssw -p" + $password + " " + $zipFilePath + " " + $targetPath

$ws = New-Object -ComObject Wscript.Shell

try
{
    # 7z.exe(圧縮)を実行
    Start-Process -FilePath $exe7zip -ArgumentList $arg -Wait -WindowStyle Hidden
    $ws.popup("圧縮しました。")
}
catch
{
    $ws.popup("エラー : " + $PSItem)
}

以下を指定します。
・7za.exeのパスを指定(2行目)
・圧縮するフォルダ(またはファイル)のパス(4行目)
・作成するZIPファイルのパス(6行目)
・パスワード(8行目)

「7z.exeを実行する際の引数」を組み立てます(11行目)

「Start-Process」コマンドレットにより、7z.exe(圧縮)を実行します(18行目)。
※「-FilePath」に「7za.exeのパス」を指定します。
※「-ArgumentList」に「7z.exeを実行する際の引数」を指定します。
※「-Wait」を記載することで同期実行になります。
※「-WindowStyle」に「Hidden」を指定することで画面を非表示にしています。

実行結果

ZIP形式(パスワード付き)圧縮できました。

実行結果
実行結果

指定したパスワードで解凍(展開)できることを確認

「作成された圧縮ファイル」を右クリックして「すべて展開」をクリックしてパスワードを入力し「展開」をクリックすると、無事に解凍(展開)できました。
※上記に記載の通りパスワードは「hogehoge」です。

参考①

PowerShellでZIPファイル(パスワード付き)を解凍(展開)することもできます。

詳細は以下の記事をご確認ください。

参考②

7-Zipを使用した圧縮コマンドの詳細は、公式サイトをご確認ください。

参考③

上記のコードで使用した以下の詳細は、公式サイトをご確認ください。

●「Start-Process」コマンドレット

タイトルとURLをコピーしました