{"id":3156,"date":"2020-08-07T22:30:12","date_gmt":"2020-08-07T20:30:12","guid":{"rendered":"https:\/\/www.mariotti.de\/?p=3156"},"modified":"2020-08-07T22:30:12","modified_gmt":"2020-08-07T20:30:12","slug":"arbeiten-mit-zip-dateien-unter-powershell-mittels-system-io-compression-zipfile","status":"publish","type":"post","link":"https:\/\/dev.mariotti.de\/?p=3156","title":{"rendered":"Arbeiten mit ZIP Dateien unter Powershell"},"content":{"rendered":"<p>Seit PowerShell 5.0 gibt es die Cmdlets Compress-Archive und Expand-Archive die Zip Dateien erstellen oder entpacken k\u00f6nnen.<br \/>\nIn manchen Situationen sind diese Cmdlets nicht ausreichend, z.B. weil sie ein 2GB Limit haben, oder weil man eine \u00e4ltere PowerShell Version nutzt<br \/>\nIn diesem Fall kann man in PowerShell mit ZIP Dateien unter Zuhilfenahme der entsprechenden .Net Framework Methode arbeiten<\/p>\n<p>Hier die wichtigsten Beispiele:<\/p>\n<pre><code class=\"language-powershell\"># Ben\u00f6tigte Assembly laden\nAdd-Type -AssemblyName System.IO.Compression.FileSystem\n\n# Erstellen eines Zip eines Ordners\n[System.IO.Compression.ZipFile]::CreateFromDirectory('C:\\Windows\\logs\\','C:\\Temp\\Logs.zip')\n\n# Extrahieren eines kompletten Zips in einen Ordner\n[System.IO.Compression.ZipFile]::ExtractToDirectory('C:\\temp\\Logs.zip','C:\\unpack\\')\n\n# Abfragen des Inhaltes einer Zip Datei\n$zip =  [System.IO.Compression.ZipFile]::Open(\"C:\\Temp\\Logs.zip\",'Read')\n$zip.Entries.FullName\n$zip.Dispose()\n\n# Einzelne Datei aus einen Zip entpacken (in diesem Beispiel die letzte Datei im Zip)\n$zip = [System.IO.Compression.ZipFile]::Open('C:\\Temp\\Logs.zip', 'Read')\n[System.IO.Compression.ZipFileExtensions]::ExtractToFile($zip.Entries[-1],\"C:\\temp\\$($zip.Entries[-1].Name)\", $true)\n$zip.Dispose()\n\n# Bestimte Teilmenge an Dateien aus einem Zip entpacken\n$zip = [System.IO.Compression.ZipFile]::Open('C:\\Temp\\Logs.zip', 'Read')\n$zip.Entries | Where-Object Name -like *.log | ForEach-Object{[System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, \"C:\\Unpack\\$($_.Name)\", $true)}\n$zip.Dispose()\n\n# Einzelne Datei einer existierenden Zip Date hinzuf\u00fcgen\n$zip =  [System.IO.Compression.ZipFile]::Open('C:\\Temp\\Logs.zip','Update')\n$compressionLevel = [System.IO.Compression.CompressionLevel]::Fastest\n[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zip,'C:\\Windows\\regedit.exe','NewFiles\\Regedit.exe',$compressionLevel)\n$zip.Dispose()\n\n# Mehrere Dateien einer existierenden Zip Datei hinzuf\u00fcgen\n$zip =  [System.IO.Compression.ZipFile]::Open('C:\\Temp\\Logs.zip','Update')\n$compressionLevel = [System.IO.Compression.CompressionLevel]::Fastest\nGet-ChildItem \"C:\\Windows\\*.log\" | ForEach-Object {[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zip, $_.FullName, (Split-Path $_.FullName -Leaf), $compressionLevel)}\n$zip.Dispose()\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ich zeige wie man in Powershell mittels der .Net Methoden aus [System.IO.Compression.ZipFile] mit Zip Dateien arbeiten kann, als Alternative zu den Cmdlets Compress-Archive bzw. Expand-Archive<\/p>\n","protected":false},"author":2,"featured_media":2425,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[],"class_list":["post-3156","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell"],"_links":{"self":[{"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=\/wp\/v2\/posts\/3156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3156"}],"version-history":[{"count":0,"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=\/wp\/v2\/posts\/3156\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=\/wp\/v2\/media\/2425"}],"wp:attachment":[{"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev.mariotti.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}