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.