HOWTO · PowerShell

PowerShell Entpacken

Dieser Artikel stellt vor, wie man eine ZIP-Datei in PowerShell entpackt.

Auf dieser Seite

Um ein ZIP-Archiv in PowerShell zu entpacken, verwenden Sie Expand-Archive mit dem Archivpfad und bei Bedarf einem Zielordner. Zum Beispiel entpackt Expand-Archive -Path .\backup.zip -DestinationPath .\restored das Archiv in den Ordner restored. Das Cmdlet entpackt Dateien und Ordner; es erstellt kein ZIP-Archiv.

Ein ZIP-Archiv mit Expand-Archive entpacken

Expand-Archive akzeptiert einen Archivpfad und optional einen Zielpfad. Der Zielordner wird erstellt, falls er noch nicht vorhanden ist. Wählen Sie einen Zielordner, den Sie wiedererkennen und auf den Sie zugreifen können – besonders dann, wenn Sie ein Archiv aus einer unbekannten Quelle entpacken. ZIP-Archive können mehrere Dateien und Ordner enthalten. Prüfen Sie deshalb den Inhalt des Zielordners, bevor Sie entpackte Dateien öffnen oder verwenden.

-Path oder -LiteralPath wählen

Verwenden Sie -Path, wenn Platzhalterzeichen im Archivpfad für die Pfadsuche ausgewertet werden sollen. Verwenden Sie -LiteralPath, wenn PowerShell den angegebenen Pfad genau so behandeln soll, wie er geschrieben wurde – einschließlich Zeichen wie eckigen Klammern. Geben Sie für eine Datei namens backup[v1].zip den Pfad mit -LiteralPath an. Bei -Path können die Klammern als Platzhaltersyntax statt als Teil des Dateinamens interpretiert werden. Wenn Sie einen Wert in Anführungszeichen setzen, übergeben Sie ihn als ein Argument an PowerShell. Dadurch wird das Platzhalterverhalten von -Path jedoch nicht in einen literalen Pfad geändert.

Zielordner festlegen und vorhandene Dateien berücksichtigen

Geben Sie -DestinationPath zusammen mit dem Ordner an, in dem die entpackten Inhalte abgelegt werden sollen. Wenn Sie den Parameter weglassen, erstellt Expand-Archive am aktuellen Speicherort einen Ordner mit dem Namen des Archivs und entpackt den Inhalt dorthin. Geben Sie -DestinationPath ausdrücklich an, wenn Sie einen vorhersehbaren Ablageort und eine einfachere Bereinigung möchten.

Das Entpacken kann fehlschlagen, wenn Dateien aus dem Archiv bereits im Zielordner vorhanden sind. -Force erlaubt, vorhandene Daten zu ersetzen. Verwenden Sie den Parameter nur, wenn das Überschreiben dieser Dateien beabsichtigt ist; prüfen oder sichern Sie wichtige Inhalte im Zielordner vorher. Er dient nicht lediglich dazu, eine Bestätigungsaufforderung zu unterdrücken.

Kann das Archiv beim Entpacken nicht gefunden werden, prüfen Sie das aktuelle Arbeitsverzeichnis und ob der Pfad relativ oder absolut ist. Kontrollieren Sie Schreibweise und Dateiendung. Enthält der Name Platzhalterzeichen, verwenden Sie -LiteralPath. Wird das Archiv gefunden, aber nicht am erwarteten Ort entpackt, geben Sie -DestinationPath ausdrücklich an und prüfen Sie diesen Ordner. Mit -WhatIf können Sie einen Befehl vor der Ausführung in der Vorschau prüfen; entfernen Sie den Schalter, wenn Sie mit dem Entpacken beginnen möchten. -Confirm fordert eine Bestätigung für den Vorgang an. -PassThru gibt Informationen zu den entpackten Dateien zurück, die Sie in einer PowerShell-Pipeline weiterverarbeiten können.

Häufig verwendete Parameter von Expand-Archive

Parameter Verwendung
-Path Gibt einen Archivpfad an, in dem Platzhalterzeichen ausgewertet werden können.
-LiteralPath Gibt einen Archivpfad an, der wörtlich behandelt wird, auch wenn der Dateiname Platzhalterzeichen enthält.
-DestinationPath Legt den Ordner für die entpackten Inhalte fest.
-Force Erlaubt, vorhandene Daten im Zielordner zu ersetzen; mit Vorsicht verwenden.
-WhatIf Zeigt eine Vorschau des Vorgangs an, ohne ihn auszuführen.
-Confirm Fordert vor dem Vorgang eine Bestätigung an.
-PassThru Gibt Informationen zu den entpackten Dateien zurück.

Beispiele: ZIP-Dateien in PowerShell entpacken

Führen Sie dieses eigenständige Beispiel in PowerShell aus. Es erstellt in einem temporären Verzeichnis ein kleines Archiv, entpackt es in einen separaten Ordner und zeigt den entpackten Text an. Die Ausgabe Archive ready im unveränderten Beispiel bleibt auf Englisch.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

$root = Join-Path ([IO.Path]::GetTempPath()) ([guid]::NewGuid().ToString('N'))
$source = Join-Path $root 'source'
$destination = Join-Path $root 'extracted'
$archive = Join-Path $root 'sample.zip'
New-Item -ItemType Directory -Path $source -Force | Out-Null
Set-Content -LiteralPath (Join-Path $source 'notes.txt') -Value 'Archive ready'
Compress-Archive -LiteralPath (Join-Path $source 'notes.txt') -DestinationPath $archive
Expand-Archive -LiteralPath $archive -DestinationPath $destination
Get-Content -LiteralPath (Join-Path $destination 'notes.txt')
Remove-Item -LiteralPath $root -Recurse -Force
Archive ready

Für ein vorhandenes Archiv können Sie Expand-Archive -Path .\backup.zip -DestinationPath .\restored verwenden, um es in einen ausgewählten Ordner zu entpacken. Enthält der Pfad selbst Platzhalterzeichen, wechseln Sie zu -LiteralPath, zum Beispiel mit Expand-Archive -LiteralPath 'C:\Archives\backup[v1].zip' -DestinationPath 'C:\Restored'. Das eigenständige Beispiel oben wurde erfolgreich ausgeführt und gab Archive ready aus (Exitcode 0). Die Befehlsformen in diesem Absatz sind Beispiele, die Sie an Ihr Archiv und Ihren Zielordner anpassen können.