Kako ustvariti arhiv ZIP s programom PowerShell

PowerShell 5.0 (vključen v sistem Windows Management Framework 5.0, ki je privzeto vključen v sistem Windows 10) ima ločen modul Microsoft.PowerShell.Archive, ki omogoča ustvarjanje in ekstrahiranje arhivov ZIP iz ukazne vrstice ali znotraj skriptov PowerShell. Seznam razpoložljivih ukaznih kod v modulu Microsoft.PowerShell.Archive (C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Modules \ Microsoft.PowerShell.Archive) je mogoče dobiti s funkcijo Get-Command.

Get-Command -Module Microsoft.PowerShell.Archive | Format-Tabela -AutoSize;

Vir različice imena CommandType
- --             -- -
Funkcija Compress-Archive 1.0.0.0 Microsoft.PowerShell.Archive
Funkcija Expand-Archive 1.0.0.0 Microsoft.PowerShell.Archive

Kot vidimo, sta na voljo dva cmdleta, katerih imena govorita sama zase:

  • Stisni arhiv
  • Razširi arhiv

Oglejmo si primere uporabe teh ukaznikov za ustvarjanje / odpakiranje ZIP arhivov iz določenih datotek ali imenikov.

Oblika ukaza Stisni arhiv naslednje:

Stisni-Arhiv [-Path] String [] [-DestinationPath] String [-CompressionLevel String] [-Podobitev]

V parametru Pot podane so izvorne datoteke za pakiranje, -DestinationPath -lokacija ustvarjene arhivske datoteke, CompressionLevel - stopnja stiskanja (NoCompression, optimalna ali najhitrejša). Parameter -Posodobiti omogoča dodajanje / posodobitev datotek v obstoječi arhiv ZIP. S ključem -Sila, če arhiv z navedenim imenom že obstaja, bo prepisan.

Namig. Raven stiskanja NoCompression je praviloma treba uporabiti za združevanje že stisnjenih datotek (jpg, msi, mp3 itd.) V eno samo arhivsko datoteko, tako da sistem ne bo izgubljal časa, da bi jih stisnil..

Primer ukaza za stiskanje ene datoteke:

Stisni-Arhiv-Pot C: \ Dnevniki \ Update.log -Destinacijska pot C: \ Arhiv \ logs.zip -KompresijaLevel Optimal


Stisnite celotno vsebino imenika:

Stisni-Arhiv-Pot C: \ Dnevniki \ -Destinacijska pot C: \ Arhiv \ logs-all.zip -CompressionLevel Optimal

Datoteke lahko stisnete z določeno masko. Na primer, morate spakirati samo datoteke s pripono * .txt.

Compress-Archive -Path C: \ Logs \ *. Txt -DestinationPath C: \ Archive \ logs-txt.zip -CompressionLevel Najhitreje

Opomba. Ker modul Microsoft.PowerShell.Archive uporablja klice v razred System.IO.Compression.ZipArchive, datoteke, večje od 2 GB, ne bo mogoče stisniti. Če poskusite stisniti večjo datoteko, se bo prikazala napaka
Izjema, ki kliče "Write" z argumenti "3": "Tok je bil predolg."
V C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ Microsoft.PowerShell.Archive \ Microsoft.PowerShell.Archive.psm1: 805
char: 29
+... $ destStream.Write ($ buffer, 0, $ numberOfBytesRead)
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ KategorijaInfo: Ni določeno: (:) [], MethodInvocationException
+ FullyQualifiedErrorId: IOException

Če želite odpreti arhiv ZIP, uporabite ukazni ukaz Razširi arhiv.
Format ukaza:

Razširi-Arhiv [-Path] String [-DestinationPath] String [-Force] [-Confirm]

Na primer, za odpakiranje predhodno ustvarjenega arhiva zip s prepisovanjem datotek v ciljnem imeniku:

Razširi-Arhiv-Pot C: \ Skripti \ test1.zip -DestinationPath c: \ skripte -Force

Med pomanjkljivostmi arhivskega modula te različice velja omeniti:

  • Ne morete pogledati arhivske vsebine, ne da bi jo razpakirali
  • Del datotek ni mogoče izvleči iz arhiva (samo popolna dekompresija)
  • Ne morete uporabljati drugih arhivskih formatov kot zip

V prejšnjih različicah Poweshell-a lahko uporabite razred NET Framework 4.5 za stiskanje / dekompresiranje zip datotek Zipfile. Oblika uporabe razreda je naslednja.

Datoteke pakiramo v arhiv:

Add-Type -sastavitev „system.io.compression.filesystem“
$ src = "C: \ Dnevniki"
$ dst = "C: \ Arhiv \ test.zip"
[io.compression.zipfile] :: CreateFromDirectory ($ src, $ dst)

Odprite arhiv ZIP na naslednji način:

Add-Type -sastavitev „system.io.compression.filesystem“
$ src = "C: \ Arhiv \ test.zip"
$ dst = "C: \ Dnevniki \ Arhiv"
[io.compression.zipfile] :: ExtractToDirectory ($ src, $ dst)