Manchmal kann es nützlich sein, programmgesteuert ZIP-Archive zu erstellen oder Dateien aus vorhandenen Archiven zu extrahieren. Mit Windows PowerShell 5.0 wurden zwei Cmdlets hinzugefügt, um genau das zu tun. Mit dem Cmdlet „Compress-Archive“ können Sie neue Archive aus Ordnern oder einzelnen Dateien erstellen und Dateien zu Archiven hinzufügen; mit „Extract-Archive“ können Sie Dateien entpacken.
Wenn Sie nicht bereits PowerShell 5.0 oder höher auf Ihren Systemen installiert haben, können Sie die neueste Version des Windows Management Frameworks von der Microsoft-Website hier herunterladen.
Using PowerShell to Create Zip Files
Beginnen wir damit, PowerShell zum Komprimieren von Dateien in einem neuen Zip-Archiv zu verwenden. Dazu müssen Sie lediglich mit dem -Path-Parameter den zu komprimierenden Ordner und mit dem -DestinationPath-Parameter den Namen des zu erstellenden Archivs angeben. Der folgende Befehl komprimiert den Ordner „Invoices“ im Stammverzeichnis C und erstellt ein Archiv mit dem Namen „Invoices.zip“ im Ordner „Archives“:
Compress-Archive -Path C:\Invoices -DestinationPath C:\Archives\Invoices
Alternativ könnten wir die Dateien im Ordner „Invoices“ auch einzeln komprimieren, indem wir -LiteralPath anstelle von -Path verwenden. Dieser Befehl erstellt ein Archiv mit nur den beiden Dateien, die explizit im Parameter -LiteralPath aufgeführt sind:
Compress-Archive -LiteralPath C:\ Invoices\File1.txt, C:\Invoices\File2.txt -DestinationPath C:\Archives\Invoices -Force
Beachten Sie, dass ich den Parameter -Force hinzugefügt habe, um das mit dem ersten Befehl erstellte Archiv zu überschreiben. Ohne den Parameter -Force können Sie vorhandene Archive nicht überschreiben und PowerShell fordert Sie stattdessen auf, dem Archiv Dateien hinzuzufügen.
Um einem Archiv Dateien hinzuzufügen, verwenden Sie den Parameter -Update. Der folgende Befehl fügt alle Dateien im Ordner „Invoices“ zu meinem bestehenden Archiv „Invoices.zip“ hinzu:
Compress-Archive -Path C:\Invoices\* -Update -DestinationPath C:\Archives\Invoices
Optional können Sie den Parameter -CompressionLevel mit einem von drei Werten verwenden: Optimal, NoCompression oder Fastest. Optimal ist die Standardeinstellung, wenn der Parameter -CompressionLevel nicht gesetzt ist; sie verwendet die beste verfügbare Kompression, kann aber länger dauern als die Verwendung von Fastest. Um ein Archiv ohne Komprimierung zu erstellen, verwenden Sie den Wert NoCompression.
Using PowerShell to Unzip Files
Das Extrahieren von Dateien aus einem Archiv ist noch einfacher als das Erstellen eines Archivs. Sie müssen nur den Namen des Archivs und den Zielordner für die entpackten Dateien angeben. Der folgende Befehl extrahiert den Inhalt des Archivs „Invoices.zip“ mit dem Cmdlet „Expand-Archive“ in einen Ordner mit dem Namen „InvoicesUnzipped“.
Expand-Archive -LiteralPath C:\Archives\Invoices.Zip -DestinationPath C:\ InvoicesUnzipped
Der Ordner, in den Sie die Dateien entpacken möchten, muss nicht vorhanden sein; Expand-Archive erstellt den Ordner bei Bedarf automatisch. Wenn die Dateien, die Sie entpacken möchten, jedoch bereits im Zielordner vorhanden sind, gibt Expand-Archive einen Fehler zurück. Sie können die Dateien im Zielordner überschreiben, indem Sie dem Befehl den Parameter -Force hinzufügen.