Compress-Archive
Hiermee maakt u een gecomprimeerd archief of gezipt bestand op basis van opgegeven bestanden en mappen.
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
De Compress-Archive cmdlet maakt een gecomprimeerd of gezipt archiefbestand 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 het Microsoft .NET API System.IO.Compression.ZipArchive om bestanden te comprimeren.
De maximale bestandsgrootte is 2 GB, omdat er een beperking is van de onderliggende API.
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 padparameter 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 (*) jokerteken 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 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-dot-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 wordt 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 de parameter Recurse gebruiktGet-ChildItem. Als recursieprocessen wordt 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 padparameter 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 Compress-Archiveverzonden. Het DestinationPath geeft de locatie voor het archiefbestand op. De padparameter wordt 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 duplicaatbestand bevat:
- Het MapInfo-object maakt de
testsubmap en bevat hettestlog.txtbestand, dat de oorspronkelijke mapstructuur weerspiegelt. - Het FileInfo-object maakt een duplicaat
testlog.txtin de hoofdmap van het archief. Het dubbele bestand wordt gemaakt omdat recursie een bestandsobject naartoeCompress-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 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
Hiermee geeft u op hoeveel compressie moet worden toegepast wanneer u het archiefbestand maakt. Snellere compressie vereist minder tijd om het bestand te maken, maar 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. De verwerkingstijd is afhankelijk van de bestandsgrootte.
| Type: | String |
| Accepted values: | Optimal, NoCompression, Fastest |
| Position: | Named |
| Default value: | Optimal |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.
| Type: | SwitchParameter |
| Aliases: | cf |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
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 , wordt de bestandsnaamextensie door de .zip cmdlet toegevoegd.
| Type: | String |
| Position: | 1 |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Dwingt de opdracht uit te voeren zonder te vragen om bevestiging van de gebruiker.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u het pad of de paden naar de bestanden die u wilt toevoegen aan het archief zip-bestand. In tegenstelling tot de path-parameter wordt de waarde van LiteralPath precies gebruikt zoals deze wordt 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 het gezipte uitvoerbestand, gebruikt u komma's om de paden te scheiden.
| Type: | String[] |
| Aliases: | PSPath |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
Zorgt ervoor dat de cmdlet een bestandsobject uitvoert dat het gemaakte archiefbestand vertegenwoordigt.
Deze parameter is geïntroduceerd in PowerShell 6.0.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
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 bijbehorende bestanden en submappen zipt, gebruikt u het jokerteken sterretje (
*). 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 |
| Accept pipeline input: | True |
| Accept wildcard characters: | True |
Updates het opgegeven archief 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 |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.
| Type: | SwitchParameter |
| Aliases: | wi |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Invoerwaarden
U kunt een tekenreeks met een pad naar een of meer bestanden doorsluisen.
Uitvoerwaarden
De cmdlet retourneert alleen een FileInfo-object wanneer u de parameter PassThru gebruikt.
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 specificatie van het ZIP-bestand geeft geen standaardmethode op voor het coderen van bestandsnamen die niet-ASCII-tekens bevatten. De Compress-Archive cmdlet maakt gebruik van UTF-8-codering. Andere ZIP-archiefhulpprogramma's kunnen een ander coderingsschema gebruiken. Bij het extraheren van bestanden met bestandsnamen die niet zijn opgeslagen met UTF-8-codering, Expand-Archive gebruikt u de onbewerkte waarde in het archief. Dit kan resulteren in een andere bestandsnaam dan de bronbestandsnaam die is opgeslagen in het archief.
Verwante koppelingen
Feedback
Feedback verzenden en weergeven voor