Compress-Archive
Hiermee maakt u een gecomprimeerd archief of zip-bestand 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. Zie System.IO.Compression.ZipArchivevoor 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_Splattingvoor 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 de 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 snelste om de verwerkingstijd te verminderen. De parameter DestinationPath geeft de locatie voor het Draft.zip
-bestand op. Het bestand Draft.zip
bevat Draftdoc.docx
en alle bestanden met de extensie .vsd
.
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 de 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 snelste om de verwerkingstijd te verminderen. De parameter DestinationPath geeft de locatie voor het Draft.zip
-bestand op. Het bestand Draft.zip
bevat alleen Draftdoc.docx
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 bevat de hoofdmap en alle bijbehorende bestanden en submappen. Het archiefbestand heeft een mapstructuur omdat het Pad een hoofdmap opgeeft.
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 uitgesloten de hoofdmap, 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 de 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 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. Elke FileInfo en DirectoryInfo object wordt naar beneden verzonden.
Compress-Archive
elk object aan het PipelineDir.zip
archief toevoegt. De parameter Path 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 Get-ChildItem
gebruikt met de parameter Recurse. Als recursieprocessen worden elke 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 map C:\TestLog
bevat geen bestanden. Het bevat een submap met de naam testsub
die het bestand testlog.txt
bevat.
Get-ChildItem
gebruikt de parameter Path om de hoofdmap op te geven, C:\TestLog
. De parameter Recurse verwerkt de bestanden en mappen. Er wordt een DirectoryInfo--object gemaakt voor testsub
en een FileInfo object testlog.txt
.
Elk object wordt in de pijplijn naar Compress-Archive
verzonden. De DestinationPath- geeft de locatie voor het archiefbestand op. De parameter Path 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 object FileInfo maakt een duplicaat
testlog.txt
in de hoofdmap van het archief. Het dubbele bestand wordt gemaakt omdat recursie een bestandsobject naarCompress-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, Draft.zip
, bijgewerkt in de map C:\Archives
. 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
Met de opdracht wordt Draft.zip
bijgewerkt met nieuwere versies van bestaande bestanden in de C:\Reference
map en de 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.
- NoCompression. Comprimeert de bronbestanden niet.
- Optimal. 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
U wordt 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. De 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 .zip
bestandsnaamextensie heeft, 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 bevat de hoofdmap en alle bijbehorende bestanden en submappen, geeft u de hoofdmap op in het Pad zonder jokertekens. Bijvoorbeeld:
-Path C:\Reference
- Als u een archief wilt maken dat uitgesloten de hoofdmap, maar alle bestanden en submappen zipt, gebruikt u het sterretje (
*
) jokerteken. Bijvoorbeeld:-Path C:\Reference\*
- Als u een archief wilt maken waarin alleen de bestanden in de hoofdmap worden gezipt, 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
Toont wat er zou gebeuren als de cmdlet wordt uitgevoerd. 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 Get-ChildItem
gebruikt met de parameter Recurse, 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, gebruikt Expand-Archive
de onbewerkte waarde in het archief. Dit kan resulteren in een andere bestandsnaam dan de bronbestandsnaam die is opgeslagen in het archief.