これまでに下記の記事でZipファイルを作成する方法を紹介しました。
- PowerShell で DotNetZip を使用する
- PowerShell で DotNetZip を使用する ~ファイル名に日本語が含まれる場合の対応~
- PowerShell で DotNetZip を使用する ~自己解凍形式ファイルの作成~
今回は、Zipファイルを解凍する関数を作ってみたので紹介します。
[void][System.Reflection.Assembly]::LoadFrom("c:\work\Ionic.Zip.dll")
function Unpack-Zip([string]$TargetFile, [string]$TargetDir)
{
$zipfile = new-object Ionic.Zip.ZipFile
#解凍するファイルの読み込み
$zip = [Ionic.Zip.ZipFile]::Read($TargetFile)
if ($TargetDir.Length -eq 0)
{
$TargetDir = Split-Path $TargetFile -Parent
}
$zip | %{$_.Extract($TargetDir, [Ionic.Zip.ExtractExistingFileAction]::OverWriteSilently)}
Write-Host "解凍が完了しました!!"
}
Ionic.Zip.dllの使用方法については、過去記事を参照ください。
ZipファイルはExtractメソッドで行っています。
Extractメソッドの引数にOverWriteSilentlyを渡しているので、ファイルが既存する場合には上書きされます。
この関数の書式は
Unpack-Zip 解凍するファイルのパス [解凍先ディレクトリ]
です。
解凍先ディレクトリは省略することができ、省略した場合はZipファイルがあるディレクトリに解凍されます。

コメント