- 2024-6-22
- PowerShell, 日々
PowerShellでパスワード付きzipを定期的に作成することになったので作成。
以下のPowerShellスクリプトを使用して、指定されたフォルダまたはファイルをパスワード付きZIPファイルに圧縮する方法について説明します。
このスクリプトは、7-Zipを使用してZIPファイルを作成し、処理の結果を表示します。
スクリプトの概要
まず、スクリプトの全体像を示します。次に、各部分の詳細な説明を行います。
Param ( [string]$sourcePath, [string]$zipFilePath ) # 7-Zipのインストールパス $sevenZipPath = "C:\Program Files\7-Zip\7z.exe" # ZIPファイルに設定するパスワード $password = "XXX_XXX" # 7-Zipを使用してパスワード付きZIPファイルを作成 $process = Start-Process -FilePath $sevenZipPath ` -ArgumentList @("a", "-tzip", $zipFilePath, $sourcePath, "-p$password") ` -NoNewWindow -Wait -PassThru # 終了コードの確認 if ($process.ExitCode -ne 0) { Write-Host "処理結果 :失敗 終了コード:$process.ExitCode" Write-Host "実行終了時間:" (Get-Date).ToString("yyyy.MM.dd HH.mm.ss") exit $process.ExitCode } else { Write-Host "処理結果 :成功" Write-Host "実行終了時間:" (Get-Date).ToString("yyyy.MM.dd HH.mm.ss") exit 0 }
パラメータの定義
このPowerShellスクリプトの引数です。
スクリプトは2つのパラメータを受け取ります。
※余談ですが、スクリプトで引数を受け取る場合、必ず先頭に記載します。
PowerShellは、上から実行されるためです。
Param ( [string]$sourcePath, [string]$zipFilePath )
7-Zipのインストールパスの設定
7-Zipのインストールパスを設定します。
このパスは、7-Zipがインストールされている場所に依存します。
通常は、「C:\Program Files\7-Zip\7z.exe」です。
$sevenZipPath = "C:\Program Files\7-Zip\7z.exe"
ZIPファイルに設定するパスワードの定義
パスワード付きZIPファイルを作成するために、パスワードを設定します。
パスワードもスクリプトの引数にすればもっと便利。
今回は固定。
$password = "XXX_XXX"
7-Zipを使用してパスワード付きZIPファイルを作成
「Start-Process」コマンドレットを使用して7-Zipを実行し、指定されたフォルダまたはファイルを圧縮します。
「-ArgumentList」 パラメータを使用して7-Zipに引数を渡します。
ここ、本体部分
$process = Start-Process -FilePath $sevenZipPath ` -ArgumentList @("a", "-tzip", $zipFilePath, $sourcePath, "-p$password") ` -NoNewWindow -Wait -PassThru
終了コードの確認
圧縮処理の終了コードを確認し、処理が成功したか失敗したかを表示します。
終了コードに基づいてスクリプトを終了します。
if ($process.ExitCode -ne 0) { Write-Host "処理結果 :失敗 終了コード:$process.ExitCode" Write-Host "実行終了時間:" (Get-Date).ToString("yyyy.MM.dd HH.mm.ss") exit $process.ExitCode } else { Write-Host "処理結果 :成功" Write-Host "実行終了時間:" (Get-Date).ToString("yyyy.MM.dd HH.mm.ss") exit 0 } # exit でスクリプトの終了コードを呼び出し元に返却する。
$process.ExitCode: 7-Zipの終了コード
0: 正常終了
1: 警告
2: エラー
7: コマンドラインエラー
8: メモリエラー
255: ユーザー停止
スクリプトの呼び出し方
1.スクリプトをファイルに保存します。例えば、CreateZip.ps1 という名前で保存します。
2.PowerShellを管理者権限で開きます。
3.スクリプトを実行します。以下のコマンドを入力します。
.\CreateZip.ps1 -sourcePath "C:\path\to\source\folder" -zipFilePath "C:\path\to\output\file.zip"
実行例
.\CreateZip.ps1 -sourcePath "C:\Users\YourUsername\Documents\MyFolder" -zipFilePath "C:\Users\YourUsername\Documents\MyFolder.zip"
上記、実行により、
C:\Users\YourUsername\Documents\MyFolder フォルダがパスワード付きのZIPファイルとして、
C:\Users\YourUsername\Documents\MyFolder.zip に圧縮されます。
注意点
実行して何かが起こっても責任とれません。
自己責任でお願いします!