Delen via


Compress-Archive

Hiermee maakt u een gecomprimeerd ZIP-archief op basis van opgegeven bestanden en mappen.

Syntaxis

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

De Compress-Archive cmdlet maakt een gecomprimeerd of zip-bestand van een of meer opgegeven bestanden of mappen. Een archief verpakt meerdere bestanden, met optionele compressie, in één gezipt bestand voor eenvoudigere distributie en opslag. Een archiefbestand kan worden gecomprimeerd met behulp van het compressie-algoritme dat is opgegeven door de parameter CompressionLevel .

De Compress-Archive cmdlet maakt gebruik van de System.IO.Compression.ZipArchive-API om bestanden te comprimeren. De API beperkt de maximale bestandsgrootte tot 2 GB. De .NET-API werkt met bestanden die voldoen aan de officiële ZIP-bestandsindelingsspecificatie van PKWARE Inc. Zie System.IO.Compression.ZipArchive voor meer informatie.

Notitie

De Compress-Archive cmdlet negeert verborgen bestanden en mappen bij het maken of bijwerken van het archiefbestand. Op niet-Windows-computers bevat dit bestanden en mappen met een naam die begint met het punt (.teken).

Gebruik in plaats daarvan de .NET-API om ervoor te zorgen dat verborgen bestanden en mappen in het archief worden gecomprimeerd.

In sommige voorbeelden wordt splatting gebruikt om de regellengte van de codevoorbeelden te verminderen. Zie about_Splatting voor meer informatie.

Voorbeelden

Voorbeeld 1: Bestanden comprimeren om een archiefbestand te maken

In dit voorbeeld worden bestanden uit verschillende mappen gecomprimeerd en wordt een archiefbestand gemaakt. Een jokerteken wordt gebruikt om alle bestanden met een bepaalde bestandsextensie op te halen. Er is geen mapstructuur in het archiefbestand, omdat het pad alleen bestandsnamen opgeeft.

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

De parameter Path accepteert specifieke bestandsnamen en bestandsnamen met jokertekens, *.vsd. Het pad maakt gebruik van een door komma's gescheiden lijst om bestanden uit verschillende mappen op te halen. Het compressieniveau is het snelst om de verwerkingstijd te verminderen. De parameter DestinationPath geeft de locatie voor het Draft.zip bestand op. Het Draft.zip bestand bevat Draftdoc.docx en alle bestanden met een .vsd extensie.

Voorbeeld 2: Bestanden comprimeren met een LiteralPath

In dit voorbeeld worden specifieke benoemde bestanden gecomprimeerd en wordt een nieuw archiefbestand gemaakt. Er is geen mapstructuur in het archiefbestand, omdat het pad alleen bestandsnamen opgeeft.

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

Absolute pad- en bestandsnamen worden gebruikt omdat de parameter LiteralPath geen jokertekens accepteert. Het pad maakt gebruik van een door komma's gescheiden lijst om bestanden uit verschillende mappen op te halen. Het compressieniveau is het snelst om de verwerkingstijd te verminderen. De parameter DestinationPath geeft de locatie voor het Draft.zip bestand op. Het Draft.zip bestand bevat Draftdoc.docx alleen en diagram2.vsd.

Voorbeeld 3: Een map comprimeren die de hoofdmap bevat

In dit voorbeeld wordt een map gecomprimeerd en wordt een archiefbestand gemaakt dat de hoofdmap en alle bijbehorende bestanden en submappen bevat . Het archiefbestand heeft een mapstructuur omdat het pad een hoofdmap aangeeft.

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

Compress-Archivegebruikt de parameter Path om de hoofdmap op te geven. C:\Reference De parameter DestinationPath geeft de locatie voor het archiefbestand op. Het Draft.zip archief bevat de Reference hoofdmap en alle bijbehorende bestanden en submappen.

Voorbeeld 4: Een map comprimeren die de hoofdmap uitsluit

In dit voorbeeld wordt een map gecomprimeerd en wordt een archiefbestand gemaakt dat de hoofdmap uitsluit omdat het pad een sterretje (*) gebruikt. Het archief bevat een mapstructuur die de bestanden en submappen van de hoofdmap bevat.

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

Compress-Archive gebruikt de parameter Path om de hoofdmap op te geven, C:\Reference met een sterretje (*) jokerteken. De parameter DestinationPath geeft de locatie voor het archiefbestand op. Het Draft.zip archief bevat de bestanden en submappen van de hoofdmap. De Reference hoofdmap wordt uitgesloten van het archief.

Voorbeeld 5: alleen de bestanden in een hoofdmap comprimeren

In dit voorbeeld worden alleen de bestanden in een hoofdmap gecomprimeerd en wordt er een archiefbestand gemaakt. Er is geen mapstructuur in het archief omdat alleen bestanden worden gecomprimeerd.

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

Compress-Archive gebruikt de parameter Path om de hoofdmap op te geven, C:\Reference met een ster-punt-ster (*.*) jokerteken. De parameter DestinationPath geeft de locatie voor het archiefbestand op. Het Draft.zip archief bevat alleen de bestanden van de Reference hoofdmap en de hoofdmap wordt uitgesloten.

Voorbeeld 6: De pijplijn gebruiken om bestanden te archiveren

In dit voorbeeld worden bestanden in de pijplijn verzonden om een archief te maken. Er is geen mapstructuur in het archiefbestand, omdat het pad alleen bestandsnamen opgeeft.

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

Get-ChildItem gebruikt de parameter Path om twee bestanden uit verschillende mappen op te geven. Elk bestand wordt vertegenwoordigd door een FileInfo-object en wordt naar de pijplijn Compress-Archiveverzonden. De twee opgegeven bestanden worden gearchiveerd in PipelineFiles.zip.

Voorbeeld 7: De pijplijn gebruiken om een map te archiveren

In dit voorbeeld wordt een map naar beneden in de pijplijn verzonden om een archief te maken. Bestanden worden verzonden als FileInfo-objecten en mappen als DirectoryInfo-objecten . De mapstructuur van het archief bevat niet de hoofdmap, maar de bestanden en submappen zijn opgenomen in het archief.

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

Get-ChildItem gebruikt de parameter Path om de C:\LogFiles hoofdmap op te geven. Elk FileInfo - en DirectoryInfo-object wordt naar beneden verzonden in de pijplijn.

Compress-Archive voegt elk object toe aan het PipelineDir.zip archief. De padparameter is niet opgegeven omdat de pijplijnobjecten worden ontvangen in parameterpositie 0.

Voorbeeld 8: Hoe recursie van invloed kan zijn op archieven

In dit voorbeeld ziet u hoe recursie bestanden in uw archief kan dupliceren. Als u bijvoorbeeld met de parameter Recurse gebruiktGet-ChildItem. Als recursieprocessen worden elk FileInfo - en DirectoryInfo-object naar de pijplijn verzonden en toegevoegd aan het archief.

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

De C:\TestLog map bevat geen bestanden. Het bevat wel een submap met de naam testsub van het testlog.txt bestand.

Get-ChildItemgebruikt de parameter Path om de hoofdmap op te geven. C:\TestLog Met de parameter Recurse worden de bestanden en mappen verwerkt. Er wordt een DirectoryInfo-object gemaakt voor testsub en een FileInfo-objecttestlog.txt.

Elk object wordt naar de pijplijn verzonden.Compress-Archive Het DestinationPath geeft de locatie voor het archiefbestand op. De padparameter is niet opgegeven omdat de pijplijnobjecten worden ontvangen in parameterpositie 0.

In de volgende samenvatting wordt de inhoud van het PipelineRecurse.zip archief beschreven die een dubbel bestand bevat:

  • Het DirectoryInfo-object maakt de testsub map en bevat het testlog.txt bestand, dat de oorspronkelijke mapstructuur weerspiegelt.
  • Het FileInfo-object maakt een duplicaat testlog.txt in de hoofdmap van het archief. Het dubbele bestand wordt gemaakt omdat recursie een bestandsobject naartoe Compress-Archiveheeft verzonden. Dit gedrag wordt verwacht omdat elk object dat door de pijplijn wordt verzonden, wordt toegevoegd aan het archief.

Voorbeeld 9: Een bestaand archiefbestand bijwerken

In dit voorbeeld wordt een bestaand archiefbestand bijgewerkt, Draft.zipin de C:\Archives map. In dit voorbeeld bevat het bestaande archiefbestand de hoofdmap en de bijbehorende bestanden en submappen.

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

De opdracht wordt bijgewerkt Draft.zip met nieuwere versies van bestaande bestanden in de map en de C:\Reference bijbehorende submappen. En nieuwe bestanden die zijn toegevoegd aan C:\Reference of de bijbehorende submappen, worden opgenomen in het bijgewerkte Draft.zip archief.

Parameters

-CompressionLevel

Hiermee geeft u op hoeveel compressie moet worden toegepast wanneer u het archiefbestand maakt. Voor snellere compressie is minder tijd nodig om het bestand te maken, maar dit kan leiden tot grotere bestandsgrootten.

Als deze parameter niet is opgegeven, gebruikt de opdracht de standaardwaarde Optimaal.

Hier volgen de acceptabele waarden voor deze parameter:

  • Snelste. Gebruik de snelste compressiemethode die beschikbaar is om de verwerkingstijd te verminderen. Snellere compressie kan leiden tot grotere bestandsgrootten.
  • NoCompressie. Comprimeert de bronbestanden niet.
  • Optimaal. Verwerkingstijd is afhankelijk van de bestandsgrootte.
Type:String
Geaccepteerde waarden:Optimal, NoCompression, Fastest
Position:Named
Default value:Optimal
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Confirm

Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.

Type:SwitchParameter
Aliassen:cf
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-DestinationPath

Deze parameter is vereist en geeft het pad naar het archiefuitvoerbestand op. Het DestinationPath moet de naam van het zip-bestand bevatten en het absolute of relatieve pad naar het zip-bestand.

Als de bestandsnaam in DestinationPath geen bestandsnaamextensie heeft .zip , voegt de cmdlet de .zip bestandsnaamextensie toe.

Type:String
Position:1
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Force

Gebruik deze parameter om een bestaand archiefbestand te overschrijven.

Type:SwitchParameter
Position:Named
Default value:False
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-LiteralPath

Hiermee geeft u het pad of de paden naar de bestanden die u wilt toevoegen aan het archief zip-bestand. In tegenstelling tot de parameter Path wordt de waarde van LiteralPath exact gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escapetekens bevat, plaatst u elk escapeteken tussen enkele aanhalingstekens om PowerShell te instrueren geen tekens te interpreteren als escapereeksen. Als u meerdere paden wilt opgeven en bestanden wilt opnemen op meerdere locaties in uw gezipt uitvoerbestand, gebruikt u komma's om de paden te scheiden.

Type:String[]
Aliassen:PSPath
Position:Named
Default value:None
Vereist:True
Pijplijninvoer accepteren:True
Jokertekens accepteren:False

-PassThru

Zorgt ervoor dat de cmdlet een bestandsobject uitvoert dat het archiefbestand vertegenwoordigt dat is gemaakt.

Deze parameter is geïntroduceerd in PowerShell 6.0.

Type:SwitchParameter
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Path

Hiermee geeft u het pad of de paden naar de bestanden die u wilt toevoegen aan het archief zip-bestand. Als u meerdere paden wilt opgeven en bestanden op meerdere locaties wilt opnemen, gebruikt u komma's om de paden te scheiden.

Deze parameter accepteert jokertekens. Met jokertekens kunt u alle bestanden in een map toevoegen aan uw archiefbestand.

Het gebruik van jokertekens met een hoofdmap is van invloed op de inhoud van het archief:

  • Als u een archief wilt maken dat de hoofdmap en alle bijbehorende bestanden en submappen bevat , geeft u de hoofdmap op in het pad zonder jokertekens. Bijvoorbeeld: -Path C:\Reference
  • Als u een archief wilt maken dat de hoofdmap uitsluit , maar alle bestanden en submappen zipt, gebruikt u het sterretje (*) jokerteken. Bijvoorbeeld: -Path C:\Reference\*
  • Als u een archief wilt maken dat alleen de bestanden in de hoofdmap zipt, gebruikt u het jokerteken star-dot-star (*.*). Submappen van de hoofdmap worden niet opgenomen in het archief. Bijvoorbeeld: -Path C:\Reference\*.*
Type:String[]
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:True
Jokertekens accepteren:True

-Update

Werkt het opgegeven archief bij door oudere bestandsversies in het archief te vervangen door nieuwere bestandsversies met dezelfde namen. U kunt deze parameter ook toevoegen om bestanden toe te voegen aan een bestaand archief.

Type:SwitchParameter
Position:Named
Default value:False
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-WhatIf

Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.

Type:SwitchParameter
Aliassen:wi
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

Invoerwaarden

String

U kunt een tekenreeks met een pad naar een of meer bestanden doorsluisen.

Uitvoerwaarden

None

Deze cmdlet retourneert standaard geen uitvoer.

FileInfo

Wanneer u de parameter PassThru gebruikt, retourneert deze cmdlet een FileInfo-object .

Notities

Met behulp van recursie en het verzenden van objecten in de pijplijn kunnen bestanden in uw archief worden gedupliceerd. Als u bijvoorbeeld met de parameter Recurse gebruiktGet-ChildItem, wordt elk FileInfo- en DirectoryInfo-object dat naar beneden wordt verzonden, toegevoegd aan het archief.

De Compress-Archive cmdlet maakt gebruik van UTF-8-codering. Andere ZIP-archiefprogramma's kunnen een ander coderingsschema gebruiken. Bij het extraheren van bestanden met bestandsnamen die niet zijn opgeslagen met UTF-8-codering, Expand-Archive wordt de onbewerkte waarde gebruikt die in het archief is gevonden. Dit kan resulteren in een andere bestandsnaam dan de bronbestandsnaam die is opgeslagen in het archief.