PowerShell 5.0 (součástí Windows Management Framework 5.0, který je standardně součástí Windows 10) má samostatný modul Microsoft.PowerShell.Archive, což umožňuje vytvářet a extrahovat ZIP archivy z příkazového řádku nebo uvnitř skriptů PowerShell. Seznam dostupných rutin v modulu Microsoft.PowerShell.Archive (C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Moduules \ Microsoft.PowerShell.Archive) lze získat pomocí příkazu Get-Command.
Get-Command - Modul Microsoft.PowerShell.Archive | Tabulka formátů -AutoSize;
- -- -- -
Funkce Compress-Archive 1.0.0.0 Microsoft.PowerShell.Archive
Funkce Rozbalit-archivovat 1.0.0.0 Microsoft.PowerShell.Archive
Jak vidíme, jsou k dispozici dva rutiny, jejichž jména hovoří sama za sebe:
- Archiv komprese
- Rozbalte archiv
Podívejme se na příklady použití těchto rutin k vytvoření / rozbalení ZIP archivů z určených souborů nebo adresářů.
Formát příkazu Archiv komprese následující:
Compress-Archive [-Path] String [] [-DestinationPath] String [-CompressionLevel String] [-Update]
V parametru Cesta jsou určeny zdrojové soubory, které mají být zabaleny, -DestinationPath -umístění vytvořeného archivního souboru, CompressionLevel - úroveň komprese (NoCompression, Optimal nebo Fastest). Parametr -Aktualizace umožňuje přidávat / aktualizovat soubory do existujícího ZIP archivu. S klíčem -Síla, pokud archiv se zadaným názvem již existuje, bude přepsán.
Tip. Úroveň komprese NoCompression by se měla zpravidla použít ke zkombinování již komprimovaných souborů (jpg, msi, mp3 atd.) Do jediného archivního souboru, aby systém neztrácel čas pokusem o komprimaci.Příklad příkazu ke kompresi jednoho souboru:
Compress-Archive -Path C: \ Logs \ Update.log -DestinationPath C: \ Archive \ logs.zip -CompressionLevel Optimal
Komprimujte celý obsah adresáře:
Compress-Archive -Path C: \ Logs \ -DestinationPath C: \ Archive \ logs-all.zip -CompressionLevel Optimal
Soubory můžete komprimovat pomocí specifické masky. Například musíte zabalit pouze soubory s příponou * .txt.
Compress-Archive -Path C: \ Logs \ *. Txt -DestinationPath C: \ Archive \ logs-txt.zip -CompressionLevel Fastest nejrychlejší
Výjimka volající "Write" s argumenty "3": "Stream byl příliš dlouhý."
V C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Moduules \ Microsoft.PowerShell.Archive \ Microsoft.PowerShell.Archive.psm1: 805
char: 29
+... $ destStream.Write ($ buffer, 0, $ numberOfBytesRead)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: Nespecifikováno: (:) [], MethodInvocationException
+ FullyQualifiedErrorId: IOException
Chcete-li rozbalit ZIP archiv, použijte cmdlet Rozbalte archiv.
Formát příkazu:
Rozbalit-archivovat [-Path] String [-DestinationPath] String [-Force] [-Confirm]
Například pro rozbalení dříve vytvořeného archivu ZIP přepsáním souborů v cílovém adresáři:
Rozbalit-Archiv-Cesta C: \ Scripts \ test1.zip -DestinationPath c: \ scripts -Force
Z nedostatků archivačního modulu této verze stojí za zmínku:
- Nelze zobrazit obsah archivu bez rozbalení
- Část souborů nelze extrahovat z archivu (pouze úplná dekomprese)
- Nelze použít jiné archivní formáty než zip
V předchozích verzích Poweshell můžete ke komprimaci / dekomprimaci souborů ZIP použít třídu NET Framework 4.5 Zipfile. Formát pro použití třídy je následující.
Zabalíme soubory do archivu:
Add-Type -Assembly “system.io.compression.filesystem”
$ src = “C: \ Logs”
$ dst = “C: \ Archive \ test.zip”
[io.compression.zipfile] :: CreateFromDirectory ($ src, $ dst)
ZIP archiv můžete rozbalit následovně:
Add-Type -Assembly “system.io.compression.filesystem”
$ src = "C: \ Archive \ test.zip"
$ dst = "C: \ Logs \ Archve"
[io.compression.zipfile] :: ExtractToDirectory ($ src, $ dst)