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;
- -- -- -
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
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)