Compress-Archive

指定したファイルとディレクトリから圧縮アーカイブ (zip 形式のファイル) を作成します。

構文

Compress-Archive
        [-Path] <String[]>
        [-DestinationPath] <String>
        [-CompressionLevel <String>]
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]
Compress-Archive
        [-Path] <String[]>
        [-DestinationPath] <String>
        [-CompressionLevel <String>]
        -Update
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]
Compress-Archive
        [-Path] <String[]>
        [-DestinationPath] <String>
        [-CompressionLevel <String>]
        -Force
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]
Compress-Archive
        -LiteralPath <String[]>
        [-DestinationPath] <String>
        [-CompressionLevel <String>]
        -Update
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]
Compress-Archive
        -LiteralPath <String[]>
        [-DestinationPath] <String>
        [-CompressionLevel <String>]
        -Force
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]
Compress-Archive
        -LiteralPath <String[]>
        [-DestinationPath] <String>
        [-CompressionLevel <String>]
        [-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 、アーカイブ ファイルの作成時または更新時に非表示のファイルとフォルダーを無視します。

非表示のファイルとフォルダーがアーカイブに圧縮されるようにするには、代わりに .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.zipDraftdoc.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.zipdiagram2.vsdのみが含まれていますDraftdoc.docx

例 3: ルート ディレクトリを含むディレクトリを圧縮する

この例では、ディレクトリを圧縮し、ルート ディレクトリとそのすべてのファイルとサブディレクトリを 含む アーカイブ ファイルを作成します。 Path はルート ディレクトリを指定するため、アーカイブ ファイルにはディレクトリ構造があります。

Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip

Compress-Archive では、 Path パラメーターを使用してルート ディレクトリ を指定します C:\ReferenceDestinationPath パラメーターは、アーカイブ ファイルの場所を指定します。 アーカイブには Draft.zipReference ルート ディレクトリと、そのすべてのファイルとサブディレクトリが含まれます。

例 4: ルート ディレクトリを除外するディレクトリを圧縮する

次の使用例は、ディレクトリを圧縮し、ルート ディレクトリを 除外 するアーカイブ ファイルを作成します。 Path ではアスタリスク (*) ワイルドカードが使用されるためです。 アーカイブには、ルート ディレクトリのファイルとサブディレクトリを含むディレクトリ構造が含まれています。

Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip

Compress-ArchivePath パラメーターを使用して、C:\Referenceルート ディレクトリをアスタリスク (*) ワイルドカードで指定します。 DestinationPath パラメーターは、アーカイブ ファイルの場所を指定します。 アーカイブには Draft.zip 、ルート ディレクトリのファイルとサブディレクトリが含まれています。 Referenceルート ディレクトリはアーカイブから除外されます。

例 5: ルート ディレクトリ内のファイルのみを圧縮する

この例では、ルート ディレクトリ内のファイルのみを圧縮し、アーカイブ ファイルを作成します。 ファイルのみが圧縮されるため、アーカイブ内にディレクトリ構造はありません。

Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip

Compress-Archive Path パラメーターを使用してルート ディレクトリを指定し、 C:\Referencestar-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-ChildItemPath パラメーターを使用して、異なるディレクトリから 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:\TestLogRecurse パラメーターは、ファイルとディレクトリを処理します。 の 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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DestinationPath

このパラメーターは必須であり、アーカイブ出力ファイルへのパスを指定します。 DestinationPath には、zip 形式のファイルの名前と、zip 形式のファイルの絶対パスまたは相対パスを含める必要があります。

DestinationPath のファイル名にファイル名拡張子がない.zip場合、コマンドレットはファイル名拡張子を.zip追加します。

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Force

ユーザーに確認せずに、直ちにコマンドを実行します。

Type:SwitchParameter
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

アーカイブ zip ファイルに追加するファイルへのパスを指定します。 Path パラメーターとは異なり、LiteralPath の値は型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、各エスケープ文字を単一引用符で囲んで、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。 複数のパスを指定し、出力 zip ファイル内の複数の場所にファイルを含めるには、コンマを使用してパスを区切ります。

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
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
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Update

指定したアーカイブを更新、アーカイブ内の古いファイル バージョンを、同じ名前の新しいファイル バージョンに置き換えます。 このパラメーターを追加して、既存のアーカイブにファイルを追加することもできます。

Type:SwitchParameter
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

コマンドレットの実行時に発生する内容を示します。 コマンドレットは実行されません。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

String

1 つ以上のファイルへのパスを含む文字列をパイプ処理できます。

出力

None

メモ

再帰を使用してパイプラインの下にオブジェクトを送信すると、アーカイブ内のファイルが重複する可能性があります。 たとえば、Recurse パラメーターと共に を使用Get-ChildItemすると、パイプラインから送信される各 FileInfo オブジェクトと DirectoryInfo オブジェクトがアーカイブに追加されます。

ZIP ファイル仕様では、ASCII 以外の文字を含むファイル名をエンコードする標準的な方法は指定されていません。 コマンドレットは Compress-Archive UTF-8 エンコードを使用します。 他の ZIP アーカイブ ツールでは、別のエンコード スキームを使用できます。 UTF-8 エンコードを使用して保存されていないファイル名を含むファイルを抽出する場合は、 Expand-Archive アーカイブで見つかった生の値を使用します。 これにより、アーカイブに格納されているソース ファイル名とは異なるファイル名が生成される可能性があります。