Compress-Archive
指定したファイルとディレクトリから圧縮アーカイブ (圧縮ファイル) を作成します。
構文
Path (既定)
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
PathWithUpdate
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
-Update
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
PathWithForce
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
-Force
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPathWithUpdate
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
-Update
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPathWithForce
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
-Force
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPath
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
Compress-Archive コマンドレットは、指定された 1 つ以上のファイルまたはディレクトリから圧縮されたアーカイブ ファイルまたは zip 形式のアーカイブ ファイルを作成します。 アーカイブは、オプションの圧縮を使用して複数のファイルを 1 つの zip 形式のファイルにパッケージ化して、配布と保存を容易にします。 アーカイブ ファイルは、 CompressionLevel パラメーターで指定された圧縮アルゴリズムを使用して圧縮できます。
Compress-Archive コマンドレットは、System.IO.Compression.ZipArchive API を使用してファイルを圧縮します。
この API では、最大ファイル サイズが 2 GB に制限されます。 詳細については、「 System.IO.Compression.ZipArchive」を参照してください。
注
Compress-Archive コマンドレットは、アーカイブ ファイルの作成時または更新時に非表示のファイルとフォルダーを無視します。 Windows 以外のコンピューターでは、ピリオド (.) 文字で始まる名前のファイルとフォルダーが含まれます。
非表示のファイルとフォルダーがアーカイブに圧縮されるようにするには、代わりに .NET API を使用します。
一部の例では、スプラッティングを使用してコード サンプルの行長を短くします。 詳細については、about_Splattingを参照してください。
例
例 1: ファイルを圧縮してアーカイブ ファイルを作成する
この例では、異なるディレクトリのファイルを圧縮し、アーカイブ ファイルを作成します。 ワイルドカードは、特定のファイル拡張子を持つすべてのファイルを取得するために使用されます。 Path はファイル名のみを指定するため、アーカイブ ファイルにディレクトリ構造はありません。
$compress = @{
Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Path パラメーターは、ワイルドカード (*.vsd) を含む特定のファイル名とファイル名を受け入れます。
Pathでは、コンマ区切りのリストを使用して、異なるディレクトリからファイルを取得します。 圧縮レベルは Fastest 処理時間を短縮します。
DestinationPath パラメーターは、Draft.zip ファイルの場所を指定します。
Draft.zipファイルには、Draftdoc.docxと.vsd拡張子を持つすべてのファイルが含まれています。
例 2: LiteralPath を使用してファイルを圧縮する
この例では、特定の名前付きファイルを圧縮し、新しいアーカイブ ファイルを作成します。 Path はファイル名のみを指定するため、アーカイブ ファイルにディレクトリ構造はありません。
$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
絶対パスとファイル名は、 LiteralPath パラメーターがワイルドカードを受け入れないために使用されます。
Pathでは、コンマ区切りのリストを使用して、異なるディレクトリからファイルを取得します。 圧縮レベルは Fastest 処理時間を短縮します。
DestinationPath パラメーターは、Draft.zip ファイルの場所を指定します。
Draft.zip ファイルには、Draftdoc.docxとdiagram2.vsdのみが含まれます。
例 3: ルート ディレクトリを含むディレクトリを圧縮する
次の使用例は、ディレクトリを圧縮し、ルート ディレクトリとそのすべてのファイルとサブディレクトリを含むアーカイブ ファイルを作成します。 Path はルート ディレクトリを指定するため、アーカイブ ファイルにはディレクトリ構造があります。
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip
Compress-Archive では、 Path パラメーターを使用してルート ディレクトリ C:\Referenceを指定します。
DestinationPath パラメーターは、アーカイブ ファイルの場所を指定します。
Draft.zip アーカイブには、Referenceルート ディレクトリとそのすべてのファイルとサブディレクトリが含まれます。
例 4: ルート ディレクトリを除外するディレクトリを圧縮する
次の使用例は、ディレクトリを圧縮し、ルート ディレクトリ除外するアーカイブ ファイルを作成しますPathではアスタリスク (*) ワイルドカードが使用されるためです。 アーカイブには、ルート ディレクトリのファイルとサブディレクトリを含むディレクトリ構造が含まれています。
Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip
Compress-Archiveでは、Path パラメーターを使用してルート ディレクトリを指定し、アスタリスク (C:\Reference) ワイルドカードで*します。
DestinationPath パラメーターは、アーカイブ ファイルの場所を指定します。
Draft.zip アーカイブには、ルート ディレクトリのファイルとサブディレクトリが含まれています。
Referenceルート ディレクトリはアーカイブから除外されます。
例 5: ルート ディレクトリ内のファイルのみを圧縮する
この例では、ルート ディレクトリ内のファイルのみを圧縮し、アーカイブ ファイルを作成します。 ファイルのみが圧縮されるため、アーカイブ内にディレクトリ構造はありません。
Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip
Compress-Archiveでは、Path パラメーターを使用してルート ディレクトリを指定し、C:\Reference () ワイルドカードを使用して*.*します。
DestinationPath パラメーターは、アーカイブ ファイルの場所を指定します。
Draft.zip アーカイブには、Referenceルート ディレクトリのファイルのみが含まれており、ルート ディレクトリは除外されます。
例 6: パイプラインを使用してファイルをアーカイブする
この例では、ファイルをパイプラインに送信してアーカイブを作成します。 Path はファイル名のみを指定するため、アーカイブ ファイルにディレクトリ構造はありません。
Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip
Get-ChildItem では、 Path パラメーターを使用して、異なるディレクトリから 2 つのファイルを指定します。 各ファイルは FileInfo オブジェクトによって表され、パイプラインから Compress-Archiveに送信されます。
指定された 2 つのファイルは、 PipelineFiles.zipにアーカイブされます。
例 7: パイプラインを使用してディレクトリをアーカイブする
この例では、パイプラインの下にディレクトリを送信してアーカイブを作成します。 ファイルは FileInfo オブジェクトおよびディレクトリとして DirectoryInfo オブジェクトとして送信されます。 アーカイブのディレクトリ構造にはルート ディレクトリは含まれませんが、そのファイルとサブディレクトリはアーカイブに含まれます。
Get-ChildItem -Path C:\LogFiles |
Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip
Get-ChildItem では、 Path パラメーターを使用して、 C:\LogFiles ルート ディレクトリを指定します。 各 FileInfo オブジェクトと DirectoryInfo オブジェクトがパイプラインに送信されます。
Compress-Archive は、各オブジェクトを PipelineDir.zip アーカイブに追加します。 パイプライン オブジェクトはパラメーター位置 0 に受信されるため、 Path パラメーターは指定されていません。
例 8: 再帰がアーカイブに与える影響
この例では、再帰によってアーカイブ内のファイルが重複する方法を示します。 たとえば、Get-ChildItem パラメーターでを使用する場合です。 再帰プロセスとして、各 FileInfo および DirectoryInfo オブジェクトがパイプラインに送信され、アーカイブに追加されます。
Get-ChildItem -Path C:\TestLog -Recurse |
Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip
C:\TestLog ディレクトリにはファイルが含まれません。
testsub ファイルを含む testlog.txt という名前のサブディレクトリが含まれています。
Get-ChildItem では、 Path パラメーターを使用してルート ディレクトリ C:\TestLogを指定します。
Recurse パラメーターは、ファイルとディレクトリを処理します。
DirectoryInfoオブジェクトはtestsub用に作成され、FileInfoオブジェクトtestlog.txt。
各オブジェクトは、パイプラインから Compress-Archiveに送信されます。
DestinationPathアーカイブ ファイルの場所を指定します。 パイプライン オブジェクトはパラメーター位置 0 に受信されるため、 Path パラメーターは指定されていません。
次の概要では、重複するファイルを含む PipelineRecurse.zip アーカイブの内容について説明します。
-
DirectoryInfo オブジェクトは、
testsubディレクトリを作成し、元のディレクトリ構造を反映するtestlog.txtファイルを格納します。 -
FileInfo オブジェクトは、アーカイブのルートに重複する
testlog.txtを作成します。 再帰によってファイル オブジェクトがCompress-Archiveに送信されたため、重複するファイルが作成されます。 パイプラインに送信された各オブジェクトがアーカイブに追加されるため、この動作が予想されます。
例 9: 既存のアーカイブ ファイルを更新する
次の使用例は、Draft.zip ディレクトリ内の既存のアーカイブ ファイル (C:\Archives) を更新します。 この例では、既存のアーカイブ ファイルにルート ディレクトリとそのファイルとサブディレクトリが含まれています。
Compress-Archive -Path C:\Reference -Update -DestinationPath C:\Archives\Draft.zip
このコマンドは、Draft.zip ディレクトリとそのサブディレクトリ内の既存のファイルの新しいバージョンでC:\Referenceを更新します。 また、 C:\Reference またはそのサブディレクトリに追加された新しいファイルは、更新された Draft.zip アーカイブに含まれます。
パラメーター
-CompressionLevel
アーカイブ ファイルを作成するときに適用する圧縮の量を指定します。 圧縮を高速化すると、ファイルの作成に要する時間は短くなりますが、ファイル サイズが大きくなる可能性があります。
このパラメーターを指定しない場合、コマンドは既定値の Optimal を使用します。
このパラメーターに使用できる値を次に示します。
- 最速。 処理時間を短縮するために、使用可能な最速の圧縮方法を使用します。 圧縮が速いほど、ファイル サイズが大きくなる可能性があります。
- NoCompression。 ソース ファイルを圧縮しません。
- [最適] 。 処理時間はファイル サイズによって異なります。
パラメーターのプロパティ
| 型: | String |
| 規定値: | Optimal |
| 指定可能な値: | Optimal, NoCompression, Fastest |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | False |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | cf |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-DestinationPath
このパラメーターは必須であり、アーカイブ出力ファイルへのパスを指定します。 DestinationPathには、zip ファイルの名前と、zip ファイルの絶対パスまたは相対パスを含める必要があります。
DestinationPathのファイル名に.zipファイル名拡張子がない場合、コマンドレットは.zipファイル名拡張子を追加します。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | 1 |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Force
既存のアーカイブ ファイルを上書きするには、このパラメーターを使用します。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | False |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
PathWithForce
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
LiteralPathWithForce
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-LiteralPath
アーカイブ zip ファイルに追加するファイルのパスを指定します。 Path パラメーターとは異なり、LiteralPath の値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、各エスケープ文字を単一引用符で囲んで、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。 複数のパスを指定し、出力 zip ファイル内の複数の場所にファイルを含めるには、コンマを使用してパスを区切ります。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | PSPath |
パラメーター セット
LiteralPathWithUpdate
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
LiteralPathWithForce
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
LiteralPath
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
-PassThru
コマンドレットで、作成されたアーカイブ ファイルを表すファイル オブジェクトを出力します。
このパラメーターは、PowerShell 6.0 で導入されました。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | False |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Path
アーカイブ zip ファイルに追加するファイルのパスを指定します。 複数のパスを指定し、複数の場所にファイルを含めるには、コンマを使用してパスを区切ります。
このパラメーターはワイルドカード文字を受け入れます。 ワイルドカード文字を使用すると、ディレクトリ内のすべてのファイルをアーカイブ ファイルに追加できます。
ルート ディレクトリでワイルドカードを使用すると、アーカイブの内容に影響します。
- ルート ディレクトリとそのすべてのファイルとサブディレクトリ 含むアーカイブを作成するには ワイルドカードを使用せずに Path にルート ディレクトリを指定します。 例:
-Path C:\Reference - ルート ディレクトリすべてのファイルとサブディレクトリを zip 圧縮するアーカイブを作成するには、アスタリスク (
*) ワイルドカードを使用します。 例:-Path C:\Reference\* - ルート ディレクトリ内のファイルのみを圧縮するアーカイブを作成するには、 star-dot-star (
*.*) ワイルドカードを使用します。 ルートのサブディレクトリはアーカイブに含まれません。 例:-Path C:\Reference\*.*
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | True |
| DontShow: | False |
パラメーター セット
Path
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
PathWithUpdate
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
PathWithForce
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
-Update
アーカイブ内の古いファイル バージョンを、同じ名前の新しいファイル バージョンに置き換えることで、指定されたアーカイブを更新します。 このパラメーターを追加して、既存のアーカイブにファイルを追加することもできます。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | False |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
PathWithUpdate
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
LiteralPathWithUpdate
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | False |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | ウィスコンシン |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
String
1 つ以上のファイルへのパスを含む文字列をパイプ処理できます。
出力
None
既定では、このコマンドレットは出力を返しません。
FileInfo
PassThru パラメーターを使用すると、このコマンドレットは FileInfo オブジェクトを返します。
メモ
再帰を使用してパイプラインにオブジェクトを送信すると、アーカイブ内のファイルが複製される可能性があります。 たとえば、Get-ChildItem パラメーターでを使用すると、パイプラインから送信された各 FileInfo および DirectoryInfo オブジェクトがアーカイブに追加されます。
Compress-Archive コマンドレットは UTF-8 エンコードを使用します。 他の ZIP アーカイブ ツールでは、別のエンコード スキームを使用できます。 UTF-8 エンコードを使用して保存されていないファイル名を含むファイルを抽出する場合、Expand-Archive はアーカイブ内の生の値を使用します。 これにより、アーカイブに格納されているソース ファイル名とは異なるファイル名が生成される可能性があります。