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 liefert Microsoft zwei Commandlets mit:
- Compress-Archive
- Expand-Archive
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.
()