Compress-Archive
Skapar ett komprimerat arkiv, eller en zippad fil, från angivna filer och kataloger.
Syntax
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>]
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.
Kommentar
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-objekt testlog.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ållertestlog.txt
filen, vilket återspeglar den ursprungliga katalogstrukturen. - FileInfo-objektet skapar en dubblett
testlog.txt
i arkivets rot. Dubblettfilen skapas eftersom rekursionen skickade ett filobjekt tillCompress-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:
- Snabbast. Använd den snabbaste komprimeringsmetod som är tillgänglig för att minska bearbetningstiden. Snabbare komprimering kan resultera i större filstorlekar.
- NoCompression. Komprimerar inte källfilerna.
- Optimalt. Bearbetningstiden beror på filstorleken.
Typ: | String |
Godkända värden: | Optimal, NoCompression, Fastest |
Position: | Named |
Standardvärde: | Optimal |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Typ: | SwitchParameter |
Alias: | cf |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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
.
Typ: | String |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Force
Använd den här parametern för att skriva över en befintlig arkivfil.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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 jokertecken. 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.
Typ: | String[] |
Alias: | PSPath |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | 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.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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\*.*
Typ: | String[] |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | True |
-Update
Uppdateringar 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.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-WhatIf
Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.
Typ: | SwitchParameter |
Alias: | wi |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
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.
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
du 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.