Compress-Archive
指定したファイルとディレクトリから圧縮アーカイブ (zip 形式のファイル) を作成します。
構文
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Update
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Force
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Update
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Force
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
コマンドレットは Compress-Archive
、指定された 1 つ以上のファイルまたはディレクトリから圧縮されたアーカイブ ファイル (zip 形式) を作成します。 アーカイブは、オプションの圧縮を使用して複数のファイルを 1 つの zip 形式のファイルにパッケージ化して、配布と保存を容易にします。 アーカイブ ファイルは、 CompressionLevel パラメーターで指定された圧縮アルゴリズムを使用して圧縮できます。
コマンドレットは Compress-Archive
、Microsoft .NET API System.IO.Compression.ZipArchive を使用してファイルを圧縮します。
基になる API には制限があるため、最大ファイル サイズは 2 GB です。
Note
コマンドレットは 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 では、コンマ区切りのリストを使用して、異なるディレクトリからファイルを取得します。 圧縮レベルは、処理時間を短縮するために 最速 です。 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 では、コンマ区切りのリストを使用して、異なるディレクトリからファイルを取得します。 圧縮レベルは、処理時間を短縮するために 最速 です。 DestinationPath パラメーターは、ファイルの場所をDraft.zip
指定します。 ファイルには Draft.zip
と diagram2.vsd
のみが含まれていますDraftdoc.docx
。
例 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
star-dot-star (*.*
) ワイルドカードを使用します。 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: 再帰がアーカイブに与える影響
この例では、再帰によってアーカイブ内のファイルを複製する方法を示します。 たとえば、Recurse パラメーターと共に を使用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 オブジェクトと FileInfo オブジェクトが作成testsub
されます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
コマンドは、ディレクトリとそのサブディレクトリ内の既存のファイルの新しいバージョンでC:\Reference
更新Draft.zip
されます。 また、 またはそのサブディレクトリに C:\Reference
追加された新しいファイルは、更新 Draft.zip
されたアーカイブに含まれます。
パラメーター
-CompressionLevel
アーカイブ ファイルを作成するときに適用する圧縮量を指定します。 圧縮を高速化すると、ファイルの作成に要する時間は短くなりますが、ファイル サイズが大きくなる可能性があります。
このパラメーターが指定されていない場合、コマンドは既定値の Optimal を使用します。
このパラメーターに使用できる値を次に示します。
- 最速。 処理時間を短縮するには、使用可能な最速の圧縮方法を使用します。 圧縮速度が速いほど、ファイル サイズが大きくなる可能性があります。
- NoCompression。 ソース ファイルを圧縮しません。
- [最適] 。 処理時間はファイル サイズによって異なります。
Type: | String |
Accepted values: | Optimal, NoCompression, Fastest |
Position: | Named |
Default value: | Optimal |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DestinationPath
このパラメーターは必須であり、アーカイブ出力ファイルへのパスを指定します。 DestinationPath には、zip 形式のファイルの名前と、zip 形式のファイルの絶対パスまたは相対パスを含める必要があります。
DestinationPath のファイル名にファイル名拡張子がない.zip
場合、コマンドレットはファイル名拡張子を.zip
追加します。
Type: | String |
Position: | 1 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
ユーザーに確認せずに、直ちにコマンドを実行します。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
アーカイブ zip ファイルに追加するファイルへのパスを指定します。 Path パラメーターとは異なり、LiteralPath の値は型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、各エスケープ文字を単一引用符で囲んで、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。 複数のパスを指定し、出力 zip ファイル内の複数の場所にファイルを含めるには、コンマを使用してパスを区切ります。
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-PassThru
コマンドレットで、作成されたアーカイブ ファイルを表すファイル オブジェクトを出力します。
このパラメーターは PowerShell 6.0 で導入されました。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
アーカイブ zip ファイルに追加するファイルへのパスを指定します。 複数のパスを指定し、複数の場所にファイルを含めるには、コンマを使用してパスを区切ります。
このパラメーターはワイルドカード文字を受け取ります。 ワイルドカード文字を使用すると、ディレクトリ内のすべてのファイルをアーカイブ ファイルに追加できます。
ルート ディレクトリでワイルドカードを使用すると、アーカイブの内容に影響します。
- ルート ディレクトリとそのすべてのファイルとサブディレクトリを 含む アーカイブを作成するには、 [パス ] にワイルドカードを使用せずにルート ディレクトリを指定します。 例:
-Path C:\Reference
- ルート ディレクトリを 除外 し、すべてのファイルとサブディレクトリを zip 圧縮するアーカイブを作成するには、アスタリスク (
*
) ワイルドカードを使用します。 例:-Path C:\Reference\*
- ルート ディレクトリ内のファイルのみを圧縮するアーカイブを作成するには、 star-dot-star (
*.*
) ワイルドカードを使用します。 ルートのサブディレクトリはアーカイブに含まれません。 例:-Path C:\Reference\*.*
Type: | String[] |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Update
指定したアーカイブを更新、アーカイブ内の古いファイル バージョンを、同じ名前の新しいファイル バージョンに置き換えます。 このパラメーターを追加して、既存のアーカイブにファイルを追加することもできます。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 コマンドレットは実行されません。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
パスを含む文字列を 1 つ以上のファイルにパイプできます。
出力
None
既定では、このコマンドレットは出力を返しません。
PassThru パラメーターを使用すると、このコマンドレットは FileInfo オブジェクトを返します。
メモ
再帰を使用してパイプラインにオブジェクトを送信すると、アーカイブ内のファイルが重複する可能性があります。 たとえば、Recurse パラメーターと共に を使用Get-ChildItem
すると、パイプラインに送信される各 FileInfo オブジェクトと DirectoryInfo オブジェクトがアーカイブに追加されます。
ZIP ファイル仕様では、ASCII 以外の文字を含むファイル名をエンコードする標準的な方法は指定されていません。 コマンドレットは Compress-Archive
UTF-8 エンコードを使用します。 その他の ZIP アーカイブ ツールでは、別のエンコード 方式を使用できます。 UTF-8 エンコードを使用して保存されていないファイル名を含むファイルを抽出する場合は、 Expand-Archive
アーカイブ内にある生の値を使用します。 これにより、アーカイブに格納されているソース ファイル名とは異なるファイル名が生成される可能性があります。
関連リンク
フィードバック
フィードバックの送信と表示