Compress-Archive
Skapar ett komprimerat arkiv, eller en komprimerad 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 Microsoft .NET API System.IO.Compression.ZipArchive för att komprimera filer.
Den maximala filstorleken är 2 GB eftersom det finns en begränsning för det underliggande API:et.
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 med C:\Reference 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 Path 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 Sökväg 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 i 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 dubblettfil:
- DirectoryInfo-objektet skapar
testsubkatalogen och innehållertestlog.txtfilen, vilket återspeglar den ursprungliga katalogstrukturen. - FileInfo-objektet skapar en dubblett
testlog.txti arkivets rot. Dubblettfilen skapas eftersom rekursionen skickade ett filobjekt tillCompress-Archive. Det här beteendet förväntas eftersom varje objekt som skickas ned pipelinen läggs till i arkivet.
Exempel 9: Uppdatera en befintlig arkivfil
I det C:\Archives här exemplet uppdateras en befintlig arkivfil, Draft.Zip, i 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
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.
| Type: | String |
| Accepted values: | Optimal, NoCompression, Fastest |
| Position: | Named |
| Default value: | Optimal |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Uppmanar dig att bekräfta innan du kör cmdleten.
| Type: | SwitchParameter |
| Aliases: | cf |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
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 .
| Type: | String |
| Position: | 1 |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Tvingar kommandot att köras utan att be om användarbekräftelse.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Anger sökvägen eller sökvägarna till de filer som du vill lägga till i den komprimerade arkivfilen. Till skillnad från parametern Path används värdet för LiteralPath exakt 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 zip-filen med utdata använder du kommatecken för att avgränsa sökvägarna.
| Type: | String[] |
| Aliases: | PSPath |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
Gör att cmdleten matar ut ett filobjekt som representerar arkivfilen som skapats.
Den här parametern introducerades i PowerShell 6.0.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Anger sökvägen eller sökvägarna till de filer som du vill lägga till i den komprimerade arkivfilen. 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. Exempelvis:
-Path C:\Reference - Om du vill skapa ett arkiv som exkluderar rotkatalogen, men zippar alla dess filer och underkataloger, använder du jokertecknet asterisk (
*). Exempelvis:-Path C:\Reference\* - Om du vill skapa ett arkiv som endast zippar filerna i rotkatalogen använder du jokertecknet star-dot-star (
*.*). Underkataloger för roten ingår inte i arkivet. Exempelvis:-Path C:\Reference\*.*
| Type: | String[] |
| Position: | 0 |
| Default value: | None |
| Accept pipeline input: | True |
| Accept wildcard characters: | True |
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.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.
| Type: | SwitchParameter |
| Aliases: | wi |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Indata
Du kan skicka en sträng som innehåller en sökväg till en eller flera filer.
Utdata
Cmdleten returnerar bara ett FileInfo-objekt när du använder parametern PassThru .
Kommentarer
Om du använder rekursion och skickar objekt nedåt i pipelinen kan dubbletter av filer i arkivet. 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.
ZIP-filspecifikationen anger inte ett standardsätt för kodning av filnamn som innehåller icke-ASCII-tecken. 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 Expand-Archive använder 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.
Relaterade länkar
Feedback
Skicka och visa feedback för