PowerShell の圧縮解除
ZIP ファイルタイプは、ファイルを 1つのファイルに圧縮することにより、そのサイズを最小化します。この方法は、ハードドライブのスペースを節約し、情報を暗号化し、ファイルを相互に簡単に交換できるようにします。
PowerShell は、Expand-Archive コマンドを使用して、ZIP ファイルが存在するのと同じディレクトリまたは指定された宛先パス上の特定の Zip ファイルからファイルとフォルダーを抽出します。
ここでは、削除に 2つの異なる構文を使用できます。これら 2つは別々に使用できますが、組み合わせることはできません。
Expand-Archive
構文 1
ここではパスプロパティが使用され、パスを指定するときにワイルドカードを使用できます。
Expand-Archive
[-Path] <String>
[[-DestinationPath] <String>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Expand-Archive
構文 2
次のオプションはリテラルパスです。ここで、指定されたパスは指定されたとおりに取得され、ワイルドカードの使用は許可されていないため、正確である必要があります。パスウェイにエスケープ文字が含まれている場合は、各エスケープ文字を一重引用符で囲んで、文字をエスケープパターンとして解釈してはならないことを PowerShell に通知します。
Expand-Archive
-LiteralPath <String>
[[-DestinationPath] <String>]
[-Force]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Expand-Archive
パラメータ
使用される最も一般的なパラメータの名前と説明を以下に示します。
名前 | 説明 |
---|---|
-Confirm |
コマンドレットを実行する前に確認が求められます |
-DestinationZip |
解凍フォルダへのパスを指定します。フォルダが存在しない場合は、ターゲットフォルダが作成されます |
-Force |
確認なしでコマンドレットを強制する |
-LiteralPath |
アーカイブファイルへのパスを指定します。リテラルパスの値は、指定されたとおりに取得されます。 |
-PassThru |
アーカイブから展開されたファイルのリストを出力します |
-Path |
アーカイブファイルへのパスを指定します |
-WhatIf |
コマンドレットを実際に実行せずに実行するとどうなるかを示します |
PowerShell の解凍ファイルの例
例 1:
現在のディレクトリ内の現在のアーカイブファイルのアイテムは、この例の -DestinationPath
オプションで指定されたフォルダに抽出されます。
Expand-Archive -Path test.Zip -DestinationPath C:\Test
例 2:
アーカイブを作成するよりも、アーカイブからファイルを抽出する方が簡単です。あなたがしなければならないのは、アーカイブの名前と解凍されたファイルの宛先の場所を与えることです。Expand-Archive コマンドレットを使用して、以下のコードは、テスト zip アーカイブのコンテンツを宛先パス変数の指定されたフォルダーTestUnzipped にエクスポートします。
Expand-Archive -LiteralPath 'C:\Archives\test[v1].Zip' -DestinationPath C:\TestUnzipped
ファイル名にはワイルドカードと解釈される可能性のある文字が含まれているため、LiteralPath オプションが使用されます。
-DestinationPath 引数を使用しない場合、PowerShell はファイルを現在のルートフォルダーに解凍し、Zip ファイルのファイル名で新しいフォルダーを作成します。
PowerShell がファイルを抽出しようとすると、ディレクトリが宛先に存在する場合、これはエラーをスローします。 -Force
引数を使用すると、PowerShell をプッシュして古いデータを新しいデータに置き換えることができます。
-Force
引数は、古いファイルが本当に必要なくなった場合にのみ使用する必要があります。これは、マシン上のファイルを永続的に上書きするためです。
ZIP ファイルは、ファイルとディレクトリを 1つのドキュメントに圧縮して保存します。ソフトウェアをインストールしなくても、PowerShell はさまざまな方法でソフトウェアを取得できます。上で概説したアプローチは、クロスプラットフォームアプリとネイティブアプリの両方に適用できます。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.