Dela via


Compress-Archive

Skapar ett komprimerat arkiv, eller en zippad fil, från angivna filer och kataloger.

Syntax

Path (Standard)

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>]

Description

Cmdleten Compress-Archive skapar en komprimerad eller zippad arkivfil från en eller flera angivna filer eller kataloger. Ett arkiv paket flera filer, med valfri komprimering, i en enda zippad fil för enklare distribution och lagring. En arkivfil kan komprimeras med hjälp av komprimeringsalgoritmen som anges av parametern CompressionLevel .

Cmdleten Compress-Archive använder API:et System.IO.Compression.ZipArchive för att komprimera filer. API:et begränsar den maximala filstorleken till 2 GB. Mer information finns i System.IO.Compression.ZipArchive.

Anmärkning

Cmdleten Compress-Archive ignorerar dolda filer och mappar när du skapar eller uppdaterar arkivfilen. På datorer som inte är Windows innehåller detta filer och mappar med namn som börjar med periodtecknet (.).

Om du vill se till att dolda filer och mappar komprimeras till arkivet använder du .NET-API:et i stället.

Vissa exempel använder splatting för att minska radlängden för kodexemplen. Mer information finns i about_Splatting.

Exempel

Exempel 1: Komprimera filer för att skapa en arkivfil

Det här exemplet komprimerar filer från olika kataloger och skapar en arkivfil. Ett jokertecken används för att hämta alla filer med ett visst filnamnstillägg. Det finns ingen katalogstruktur i arkivfilen eftersom sökvägen endast anger filnamn.

$compress = @{
  Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
  CompressionLevel = "Fastest"
  DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress

Parametern Path accepterar specifika filnamn och filnamn med jokertecken, *.vsd. Sökvägen använder en kommaavgränsad lista för att hämta filer från olika kataloger. Komprimeringsnivån är snabbast för att minska bearbetningstiden. Parametern DestinationPath anger platsen för Draft.zip filen. Filen Draft.zip innehåller Draftdoc.docx och alla filer med ett .vsd tillägg.

Exempel 2: Komprimera filer med hjälp av en LiteralPath

Det här exemplet komprimerar specifika namngivna filer och skapar en ny arkivfil. Det finns ingen katalogstruktur i arkivfilen eftersom sökvägen endast anger filnamn.

$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress

Absolut sökväg och filnamn används eftersom parametern LiteralPath inte accepterar jokertecken. Sökvägen använder en kommaavgränsad lista för att hämta filer från olika kataloger. Komprimeringsnivån är snabbast för att minska bearbetningstiden. Parametern DestinationPath anger platsen för Draft.zip filen. Filen Draft.zip innehåller Draftdoc.docx bara och diagram2.vsd.

Exempel 3: Komprimera en katalog som innehåller rotkatalogen

Det här exemplet komprimerar en katalog och skapar en arkivfil som innehåller rotkatalogen och alla dess filer och underkataloger. Arkivfilen har en katalogstruktur eftersom sökvägen anger en rotkatalog.

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

Compress-Archive använder parametern Path för att ange rotkatalogen, C:\Reference. Parametern DestinationPath anger platsen för arkivfilen. Arkivet Draft.zip innehåller rotkatalogen Reference och alla dess filer och underkataloger.

Exempel 4: Komprimera en katalog som exkluderar rotkatalogen

Det här exemplet komprimerar en katalog och skapar en arkivfil som exkluderar rotkatalogen eftersom sökvägen använder ett asterisk* () jokertecken. Arkivet innehåller en katalogstruktur som innehåller rotkatalogens filer och underkataloger.

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

Compress-Archive använder parametern Path för att ange rotkatalogen C:\Reference med ett asterisk* () jokertecken. Parametern DestinationPath anger platsen för arkivfilen. Arkivet Draft.zip innehåller rotkatalogens filer och underkataloger. Rotkatalogen Reference undantas från arkivet.

Exempel 5: Komprimera endast filerna i en rotkatalog

Det här exemplet komprimerar endast filerna i en rotkatalog och skapar en arkivfil. Det finns ingen katalogstruktur i arkivet eftersom endast filer komprimeras.

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

Compress-Archive använder parametern Sökväg för att ange rotkatalogen med C:\Reference jokerteckenet star-dot-star (*.*). Parametern DestinationPath anger platsen för arkivfilen. Arkivet Draft.zip innehåller bara rotkatalogens Reference filer och rotkatalogen undantas.

Exempel 6: Använd pipelinen för att arkivera filer

Det här exemplet skickar filer nedåt i pipelinen för att skapa ett arkiv. Det finns ingen katalogstruktur i arkivfilen eftersom sökvägen endast anger filnamn.

Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
  Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip

Get-ChildItem använder parametern Path för att ange två filer från olika kataloger. Varje fil representeras av ett FileInfo-objekt och skickas ned i pipelinen till Compress-Archive. De två angivna filerna arkiveras i PipelineFiles.zip.

Exempel 7: Använd pipelinen för att arkivera en katalog

Det här exemplet skickar en katalog nedåt i pipelinen för att skapa ett arkiv. Filer skickas som FileInfo-objekt och kataloger som DirectoryInfo-objekt . Arkivets katalogstruktur innehåller inte rotkatalogen, men dess filer och underkataloger ingår i arkivet.

Get-ChildItem -Path C:\LogFiles |
    Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip

Get-ChildItem använder parametern Path för att ange rotkatalogen C:\LogFiles . Varje FileInfo - och DirectoryInfo-objekt skickas ned i pipelinen.

Compress-Archive lägger till varje objekt i arkivet PipelineDir.zip . Parametern Path har inte angetts eftersom pipelineobjekten tas emot i parameterposition 0.

Exempel 8: Hur rekursion kan påverka arkiv

Det här exemplet visar hur rekursion kan duplicera filer i ditt arkiv. Om du till exempel använder Get-ChildItem med parametern Recurse . Som rekursionsprocesser skickas varje FileInfo - och DirectoryInfo-objekt ned pipelinen och läggs till i arkivet.

Get-ChildItem -Path C:\TestLog -Recurse |
  Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip

Katalogen C:\TestLog innehåller inga filer. Den innehåller en underkatalog med namnet testsub som innehåller testlog.txt filen.

Get-ChildItem använder parametern Path för att ange rotkatalogen, C:\TestLog. Parametern Recurse bearbetar filerna och katalogerna. Ett DirectoryInfo-objekt skapas för testsub och ett FileInfo-objekttestlog.txt.

Varje objekt skickas ned i pipelinen till Compress-Archive. DestinationPath anger platsen för arkivfilen. Parametern Path har inte angetts eftersom pipelineobjekten tas emot i parameterposition 0.

Följande sammanfattning beskriver arkivets PipelineRecurse.zip innehåll som innehåller en duplicerad fil:

  • DirectoryInfo-objektet skapar testsub katalogen och innehåller testlog.txt filen, vilket återspeglar den ursprungliga katalogstrukturen.
  • FileInfo-objektet skapar en dubblett testlog.txt i arkivets rot. Dubblettfilen skapas eftersom rekursionen skickade ett filobjekt till Compress-Archive. Det här beteendet förväntas eftersom varje objekt som skickas ned i pipelinen läggs till i arkivet.

Exempel 9: Uppdatera en befintlig arkivfil

I det här exemplet uppdateras en befintlig arkivfil, Draft.zip, i C:\Archives katalogen. I det här exemplet innehåller den befintliga arkivfilen rotkatalogen och dess filer och underkataloger.

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

Kommandot uppdateras Draft.zip med nyare versioner av befintliga filer i C:\Reference katalogen och dess underkataloger. Och nya filer som har lagts till C:\Reference i eller dess underkataloger ingår i det uppdaterade Draft.zip arkivet.

Parametrar

-CompressionLevel

Anger hur mycket komprimering som ska tillämpas när du skapar arkivfilen. Snabbare komprimering kräver mindre tid för att skapa filen, men kan resultera i större filstorlekar.

Om den här parametern inte anges använder kommandot standardvärdet Optimal.

Följande är godkända värden för den här parametern:

  • snabbaste. Använd den snabbaste komprimeringsmetod som är tillgänglig för att minska bearbetningstiden. Snabbare komprimering kan resultera i större filstorlekar.
  • Nej, komprimering. Komprimerar inte källfilerna.
  • Optimalt. Bearbetningstiden beror på filstorleken.

Parameteregenskaper

Typ:String
Standardvärde:Optimal
Godkända värden:Optimal, NoCompression, Fastest
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False
Alias:jfr

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-DestinationPath

Den här parametern krävs och anger sökvägen till arkivutdatafilen. DestinationPath ska innehålla namnet på den zippade filen och antingen den absoluta eller relativa sökvägen till den zippade filen.

Om filnamnet i DestinationPath inte har något .zip filnamnstillägg lägger cmdleten till filnamnstillägget .zip .

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:1
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Force

Använd den här parametern för att skriva över en befintlig arkivfil.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

PathWithForce
Position:Named
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False
LiteralPathWithForce
Position:Named
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-LiteralPath

Anger sökvägen eller sökvägarna till de filer som du vill lägga till i den arkiverade zippade filen. Till skillnad från parametern Path används värdet för LiteralPath precis som det skrivs. Inga tecken tolkas som wildcards. Om sökvägen innehåller escape-tecken omger du varje escape-tecken inom enkla citattecken för att instruera PowerShell att inte tolka några tecken som escape-sekvenser. Om du vill ange flera sökvägar och inkludera filer på flera platser i den zippade utdatafilen använder du kommatecken för att avgränsa sökvägarna.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:PSPath

Parameteruppsättningar

LiteralPathWithUpdate
Position:Named
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument:False
LiteralPathWithForce
Position:Named
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument:False
LiteralPath
Position:Named
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument:False

-PassThru

Gör att cmdleten matar ut ett filobjekt som representerar den arkivfil som skapats.

Den här parametern introducerades i PowerShell 6.0.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Path

Anger sökvägen eller sökvägarna till de filer som du vill lägga till i den arkiverade zippade filen. Om du vill ange flera sökvägar och inkludera filer på flera platser använder du kommatecken för att avgränsa sökvägarna.

Den här parametern accepterar jokertecken. Med jokertecken kan du lägga till alla filer i en katalog i din arkivfil.

Om du använder jokertecken med en rotkatalog påverkas innehållet i arkivet:

  • Om du vill skapa ett arkiv som innehåller rotkatalogen och alla dess filer och underkataloger anger du rotkatalogen i sökvägen utan jokertecken. Till exempel: -Path C:\Reference
  • Om du vill skapa ett arkiv som exkluderar rotkatalogen, men zippar alla dess filer och underkataloger, använder du jokertecknet asterisk (*). Till exempel: -Path C:\Reference\*
  • Om du vill skapa ett arkiv som bara zippar filerna i rotkatalogen använder du jokertecknet star-dot-star (*.*). Underkataloger för roten ingår inte i arkivet. Till exempel: -Path C:\Reference\*.*

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:True
DontShow:False

Parameteruppsättningar

Path
Position:0
Obligatorisk:True
Värde från pipeline:True
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument:False
PathWithUpdate
Position:0
Obligatorisk:True
Värde från pipeline:True
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument:False
PathWithForce
Position:0
Obligatorisk:True
Värde från pipeline:True
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument:False

-Update

Uppdaterar det angivna arkivet genom att ersätta äldre filversioner i arkivet med nyare filversioner som har samma namn. Du kan också lägga till den här parametern för att lägga till filer i ett befintligt arkiv.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

PathWithUpdate
Position:Named
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False
LiteralPathWithUpdate
Position:Named
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-WhatIf

Visar vad som skulle hända om kommandot körs. Cmdleten körs inte.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False
Alias:Wi

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

CommonParameters

Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.

Indata

String

Du kan skicka en sträng som innehåller en sökväg till en eller flera filer.

Utdata

None

Som standard returnerar den här cmdleten inga utdata.

FileInfo

När du använder parametern PassThru returnerar den här cmdleten ett FileInfo-objekt .

Kommentarer

Om du använder rekursion och skickar objekt nedåt i pipelinen kan dubbletter av filer i arkivet dupliceras. Om du till exempel använder Get-ChildItem med parametern Recurse läggs varje FileInfo - och DirectoryInfo-objekt som skickas ned i pipelinen till i arkivet.

Cmdleten Compress-Archive använder UTF-8-kodning. Andra ZIP-arkivverktyg kan använda ett annat kodningsschema. När du extraherar filer med filnamn som inte lagras med UTF-8-kodning använder Expand-Archive det råvärde som finns i arkivet. Detta kan resultera i ett filnamn som skiljer sig från källfilnamnet som lagras i arkivet.