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-Archive
gebruikt 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-Archive
verzonden.
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-ChildItem
gebruikt 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 hettestlog.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 naartoeCompress-Archive
heeft 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.zip
in 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
U kunt een tekenreeks met een pad naar een of meer bestanden doorsluisen.
Uitvoerwaarden
None
Deze cmdlet retourneert standaard geen uitvoer.
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.