zurück zum Artikel

Zippen mit PowerShell 5.0

Dr. Holger Schwichtenberg

In der neuen PowerShell liefert Microsoft endlich die Commandlets Compress-Archive und Expand-Archive.

In der neuen PowerShell liefert Microsoft endlich die Commandlets Compress-Archive und Expand-Archive.

Kaum zum glauben, dass Microsoft die PowerShell-Versionen 1 bis 4 ohne eigene Commandlets zum Erstellen von komprimierten Archivdateien ausgeliefert hat. Bisher musste der PowerShell-Nutzer dazu auf eine .NET-Klasse zurückgreifen:

$quelle = "t:\temp\Kundendaten"
$ziel = "t:\Kundendaten.zip"
Add-Type -assembly "system.io.compression.filesystem"
[System.IO.Compression.ZipFile]::CreateFromDirectory($quelle, $ziel)

Alternativ dazu gab es Commandlets in Erweiterungsbibliotheken aus der Community:

Nun in PowerShell 5.0 [3] liefert Microsoft zwei Commandlets mit:

Compress-Archive erhält Eingabedateien über den ersten Parameter (-Path) oder den Inhalt der Pipeline:

Compress-Archive t:\Temp\KundenDaten -DestinationPath h:\KundenDaten.zip
dir t:\Temp\KundenDaten | Compress-Archive -dest t:\KundenDaten.zip

Expand-Archive funktioniert analog:

Expand-Archive t:\KundenDaten.zip t:\Temp\KundenDaten -Force
"t:\KundenDaten.zip" | Expand-Archive -DestinationPath
t:\Temp\KundenDaten -Force

Allerdings unterstützen diese beiden Commandlets nur ZIP-Dateien. Andere Formate werden abgelehnt (" .rar is not a supported archive file format. .zip is the only supported archive file format")

Bei Compress-Archive bestimmt die Einstellungen für CompressionLevel ("NoCompression", "Fastest" oder "Optimal") den Komprimierungsgrad. Das -Update-Flag aktualisiert bestehende Archive, indem es Dateien ergänzt beziehungsweise ältere Versionen überschreibt. Bei Expand-Archive erzwingt der Parameter -force , dass bestehende Dateien überschrieben werden, was sonst zu einem Fehler führt.

( [4])


URL dieses Artikels:
https://www.heise.de/-2803617

Links in diesem Artikel:
[1] https://pscx.codeplex.com/
[2] http://blogs.technet.com/b/deds/archive/2009/10/19/powershell-pack.aspx
[3] http://www.it-visions.de/WindowspowerShell_5/lex/7847.aspx
[4] mailto:hs@ix.de