Compress-Archive
Erstellt ein komprimiertes ZIP-Archiv aus angegebenen Dateien und Verzeichnissen.
Syntax
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Update
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Force
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Update
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Force
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Das Compress-Archive
Cmdlet erstellt eine komprimierte oder komprimierte Archivdatei aus einer oder mehreren angegebenen Dateien oder Verzeichnissen. Ein Archiv verpackt mehrere Dateien mit optionaler Komprimierung in eine einzelne gezippte Datei, um die Verteilung und Speicherung zu vereinfachen. Eine Archivdatei kann mithilfe des durch den CompressionLevel-Parameter angegebenen Komprimierungsalgorithmus komprimiert werden.
Das Compress-Archive
Cmdlet verwendet die System.IO.Compression.ZipArchive-API zum Komprimieren von Dateien.
Die API beschränkt die maximale Dateigröße auf 2 GB. Die .NET-API arbeitet mit Dateien zusammen, die der offiziellen ZIP-Dateiformatspezifikation von PKWARE Inc. entsprechen. Weitere Informationen finden Sie unter System.IO.Compression.ZipArchive.
Hinweis
Das Compress-Archive
Cmdlet ignoriert ausgeblendete Dateien und Ordner beim Erstellen oder Aktualisieren der Archivdatei. Auf Nicht-Windows-Computern enthält dies Dateien und Ordner mit dem Namen, der mit dem Punkt (.
) Zeichen beginnt.
Um sicherzustellen, dass ausgeblendete Dateien und Ordner in das Archiv komprimiert werden, verwenden Sie stattdessen die .NET-API.
Einige Beispiele verwenden splatting, um die Zeilenlänge der Codebeispiele zu verringern. Weitere Informationen finden Sie unter about_Splatting.
Beispiele
Beispiel 1: Komprimieren von Dateien zum Erstellen einer Archivdatei
In diesem Beispiel werden Dateien aus verschiedenen Verzeichnissen komprimiert und eine Archivdatei erstellt. Ein Wildcard wird verwendet, um alle Dateien mit einer bestimmten Dateierweiterung abzurufen. In der Archivdatei gibt es keine Verzeichnisstruktur, da der Pfad nur Dateinamen angibt.
$compress = @{
Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Der Path-Parameter akzeptiert bestimmte Dateinamen und Dateinamen mit Wildcards, *.vsd
. Der Pfad verwendet eine durch Trennzeichen getrennte Liste, um Dateien aus verschiedenen Verzeichnissen abzurufen. Die Komprimierungsebene ist am schnellsten , um die Verarbeitungszeit zu reduzieren. Der Parameter DestinationPath gibt den Speicherort für die Draft.zip
Datei an. Die Draft.zip
Datei enthält Draftdoc.docx
und alle Dateien mit einer .vsd
Erweiterung.
Beispiel 2: Komprimieren von Dateien mit einem LiteralPath
In diesem Beispiel werden bestimmte benannte Dateien komprimiert und eine neue Archivdatei erstellt. In der Archivdatei gibt es keine Verzeichnisstruktur, da der Pfad nur Dateinamen angibt.
$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Absolute Pfad- und Dateinamen werden verwendet, da der LiteralPath-Parameter keine Wildcards akzeptiert. Der Pfad verwendet eine durch Trennzeichen getrennte Liste, um Dateien aus verschiedenen Verzeichnissen abzurufen. Die Komprimierungsebene ist am schnellsten , um die Verarbeitungszeit zu reduzieren. Der Parameter DestinationPath gibt den Speicherort für die Draft.zip
Datei an. Die Draft.zip
Datei enthält Draftdoc.docx
und diagram2.vsd
.
Beispiel 3: Komprimieren eines Verzeichnisses, das das Stammverzeichnis enthält
In diesem Beispiel wird ein Verzeichnis komprimiert und eine Archivdatei erstellt, die das Stammverzeichnis und alle zugehörigen Dateien und Unterverzeichnisse enthält . Die Archivdatei weist eine Verzeichnisstruktur auf, da der Pfad ein Stammverzeichnis angibt.
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip
Compress-Archive
verwendet den Path-Parameter, um das Stammverzeichnis anzugeben. C:\Reference
Der Parameter DestinationPath gibt den Speicherort für die Archivdatei an. Das Draft.zip
Archiv enthält das Reference
Stammverzeichnis und alle zugehörigen Dateien und Unterverzeichnisse.
Beispiel 4: Komprimieren eines Verzeichnisses, das das Stammverzeichnis ausschließt
In diesem Beispiel wird ein Verzeichnis komprimiert und eine Archivdatei erstellt, die das Stammverzeichnis ausschließt , da der Pfad ein Sternchen (*
) verwendet. Das Archiv enthält eine Verzeichnisstruktur, die die Dateien und Unterverzeichnisse des Stammverzeichnisses enthält.
Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
verwendet den Path-Parameter , um das Stammverzeichnis C:\Reference
mit einem Sternchen (*
)-Wildcard anzugeben. Der Parameter DestinationPath gibt den Speicherort für die Archivdatei an. Das Draft.zip
Archiv enthält die Dateien und Unterverzeichnisse des Stammverzeichnisses. Das Reference
Stammverzeichnis wird aus dem Archiv ausgeschlossen.
Beispiel 5: Komprimieren nur der Dateien in einem Stammverzeichnis
In diesem Beispiel werden nur die Dateien in einem Stammverzeichnis komprimiert und eine Archivdatei erstellt. Es gibt keine Verzeichnisstruktur im Archiv, da nur Dateien komprimiert werden.
Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
verwendet den Path-Parameter , um das Stammverzeichnis C:\Reference
mit einem Stern-Punkt-Stern (*.*
) -Wildcard anzugeben. Der Parameter DestinationPath gibt den Speicherort für die Archivdatei an. Das Draft.zip
Archiv enthält nur die Dateien des Reference
Stammverzeichnisses, und das Stammverzeichnis ist ausgeschlossen.
Beispiel 6: Verwenden der Pipeline zum Archivieren von Dateien
In diesem Beispiel werden Dateien an die Pipeline gesendet, um ein Archiv zu erstellen. In der Archivdatei gibt es keine Verzeichnisstruktur, da der Pfad nur Dateinamen angibt.
Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip
Get-ChildItem
verwendet den Parameter "Path ", um zwei Dateien aus verschiedenen Verzeichnissen anzugeben. Jede Datei wird durch ein FileInfo-Objekt dargestellt und wird an die Pipeline gesendet.Compress-Archive
Die beiden angegebenen Dateien werden archiviert in PipelineFiles.zip
.
Beispiel 7: Verwenden der Pipeline zum Archivieren eines Verzeichnisses
In diesem Beispiel wird ein Verzeichnis an die Pipeline gesendet, um ein Archiv zu erstellen. Dateien werden als FileInfo-Objekte und Verzeichnisse als DirectoryInfo-Objekte gesendet. Die Verzeichnisstruktur des Archivs enthält nicht das Stammverzeichnis, die Dateien und Unterverzeichnisse sind jedoch im Archiv enthalten.
Get-ChildItem -Path C:\LogFiles | Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip
Get-ChildItem
verwendet den Parameter "Path ", um das C:\LogFiles
Stammverzeichnis anzugeben. Jedes FileInfo - und DirectoryInfo-Objekt wird an die Pipeline gesendet.
Compress-Archive
fügt jedes Objekt zum PipelineDir.zip
Archiv hinzu. Der Path-Parameter wird nicht angegeben, da die Pipelineobjekte an Parameterposition 0 empfangen werden.
Beispiel 8: Wie rekursion sich auf Archive auswirken kann
In diesem Beispiel wird gezeigt, wie rekursion Dateien in Ihrem Archiv duplizieren kann. Beispiel: Wenn Sie den Recurse-Parameter verwendenGet-ChildItem
. Bei rekursionsprozessen wird jedes FileInfo - und DirectoryInfo-Objekt an die Pipeline gesendet und dem Archiv hinzugefügt.
Get-ChildItem -Path C:\TestLog -Recurse |
Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip
Das C:\TestLog
Verzeichnis enthält keine Dateien. Es enthält ein Unterverzeichnis mit dem Namen testsub
, das die testlog.txt
Datei enthält.
Get-ChildItem
verwendet den Path-Parameter, um das Stammverzeichnis anzugeben. C:\TestLog
Der Recurse-Parameter verarbeitet die Dateien und Verzeichnisse. Ein DirectoryInfo-Objekt wird für testsub
und ein FileInfo-Objekt testlog.txt
erstellt.
Jedes Objekt wird an die Pipeline gesendet.Compress-Archive
Der DestinationPath gibt den Speicherort für die Archivdatei an. Der Path-Parameter wird nicht angegeben, da die Pipelineobjekte an Parameterposition 0 empfangen werden.
Die folgende Zusammenfassung beschreibt den Inhalt des Archivs, der PipelineRecurse.zip
eine duplizierte Datei enthält:
- Das DirectoryInfo -Objekt erstellt das
testsub
Verzeichnis und enthält dietestlog.txt
Datei, die die ursprüngliche Verzeichnisstruktur widerspiegelt. - Das FileInfo-Objekt erstellt ein Duplikat
testlog.txt
im Stammverzeichnis des Archivs. Die duplizierte Datei wird erstellt, da rekursion ein Dateiobjekt anCompress-Archive
. Dieses Verhalten wird erwartet, da jedes Objekt, das die Pipeline gesendet hat, dem Archiv hinzugefügt wird.
Beispiel 9: Aktualisieren einer vorhandenen Archivdatei
In diesem Beispiel wird eine vorhandene Archivdatei Draft.zip
im C:\Archives
Verzeichnis aktualisiert. In diesem Beispiel enthält die vorhandene Archivdatei das Stammverzeichnis sowie die zugehörigen Dateien und Unterverzeichnisse.
Compress-Archive -Path C:\Reference -Update -DestinationPath C:\Archives\Draft.zip
Der Befehl wird mit neueren Versionen vorhandener Dateien im C:\Reference
Verzeichnis und seinen Unterverzeichnissen aktualisiertDraft.zip
. Außerdem werden neue Dateien, die bzw C:\Reference
. deren Unterverzeichnisse hinzugefügt wurden, im aktualisierten Draft.zip
Archiv enthalten.
Parameter
-CompressionLevel
Gibt an, wie viel Komprimierung angewendet werden soll, wenn Sie die Archivdatei erstellen. Eine schnellere Komprimierung erfordert weniger Zeit zum Erstellen der Datei, kann aber zu größeren Dateigrößen führen.
Wenn dieser Parameter nicht angegeben ist, verwendet der Befehl den Standardwert Optimal.
Im Folgenden sind die zulässigen Werte für diesen Parameter aufgeführt:
- Am schnellsten. Verwenden Sie die schnellste Komprimierungsmethode, die verfügbar ist, um die Verarbeitungszeit zu reduzieren. Eine schnellere Komprimierung kann zu größeren Dateigrößen führen.
- NoCompression. Komprimiert die Quelldateien nicht.
- Optimal. Die Verarbeitungszeit hängt von der Dateigröße ab.
Typ: | String |
Zulässige Werte: | Optimal, NoCompression, Fastest |
Position: | Named |
Standardwert: | Optimal |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Confirm
Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.
Typ: | SwitchParameter |
Aliase: | cf |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-DestinationPath
Dieser Parameter ist erforderlich und gibt den Pfad zur Archivausgabedatei an. Der DestinationPath sollte den Namen der gezippten Datei und entweder den absoluten oder relativen Pfad zur zippten Datei enthalten.
Wenn der Dateiname in DestinationPath keine .zip
Dateinamenerweiterung hat, fügt das Cmdlet die .zip
Dateinamenerweiterung hinzu.
Typ: | String |
Position: | 1 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Force
Verwenden Sie diesen Parameter, um eine vorhandene Archivdatei zu überschreiben.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-LiteralPath
Gibt den Pfad oder Pfad zu den Dateien an, die Sie der zippten Archivdatei hinzufügen möchten. Im Gegensatz zum Path-Parameter wird der Wert von LiteralPath genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, schließen Sie jedes Escapezeichen in einfache Anführungszeichen ein, um PowerShell anzuweisen, keine Zeichen als Escapesequenzen zu interpretieren. Verwenden Sie Kommas, um mehrere Pfade anzugeben und Dateien an mehreren Speicherorten in die zippede Ausgabedatei einzuschließen.
Typ: | String[] |
Aliase: | PSPath |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-PassThru
Bewirkt, dass das Cmdlet ein Dateiobjekt ausgibt, das die erstellte Archivdatei darstellt.
Dieser Parameter wurde in PowerShell 6.0 eingeführt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Path
Gibt den Pfad oder Pfad zu den Dateien an, die Sie der zippten Archivdatei hinzufügen möchten. Um mehrere Pfade anzugeben und Dateien an mehreren Speicherorten einzuschließen, verwenden Sie Kommas, um die Pfade zu trennen.
Dieser Parameter akzeptiert Wildcardzeichen. Mit Wildcardzeichen können Sie alle Dateien in einem Verzeichnis zu Ihrer Archivdatei hinzufügen.
Die Verwendung von Wildcards mit einem Stammverzeichnis wirkt sich auf den Inhalt des Archivs aus:
- Um ein Archiv zu erstellen, das das Stammverzeichnis und alle zugehörigen Dateien und Unterverzeichnisse enthält , geben Sie das Stammverzeichnis im Pfad ohne Wildcards an. Beispiel:
-Path C:\Reference
- Wenn Sie ein Archiv erstellen möchten, das das Stammverzeichnis ausschließt , aber alle zugehörigen Dateien und Unterverzeichnisse zippt, verwenden Sie den Stern (
*
)-Wildcard. Beispiel:-Path C:\Reference\*
- Um ein Archiv zu erstellen, das nur die Dateien im Stammverzeichnis zippt, verwenden Sie den Stern-Punkt-Stern (
*.*
) -Wildcard. Unterverzeichnisse des Stammverzeichnisses sind nicht im Archiv enthalten. Beispiel:-Path C:\Reference\*.*
Typ: | String[] |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | True |
-Update
Aktualisiert das angegebene Archiv, indem ältere Dateiversionen im Archiv durch neuere Dateiversionen mit denselben Namen ersetzt werden. Sie können diesen Parameter auch hinzufügen, um Dateien zu einem vorhandenen Archiv hinzuzufügen.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Typ: | SwitchParameter |
Aliase: | wi |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können eine Zeichenfolge senden, die einen Pfad zu einer oder mehreren Dateien enthält.
Ausgaben
None
Standardmäßig gibt dieses Cmdlet keine Ausgabe zurück.
Wenn Sie den PassThru-Parameter verwenden, gibt dieses Cmdlet ein FileInfo-Objekt zurück.
Hinweise
Mithilfe von Rekursion und Senden von Objekten in der Pipeline können Dateien in Ihrem Archiv dupliziert werden. Wenn Sie z. B. den Parameter Recurse verwendenGet-ChildItem
, wird jedes FileInfo- und DirectoryInfo-Objekt, das an die Pipeline gesendet wird, dem Archiv hinzugefügt.
Das Compress-Archive
Cmdlet verwendet UTF-8-Codierung. Andere ZIP-Archivtools können ein anderes Codierungsschema verwenden. Beim Extrahieren von Dateien mit Dateinamen, die nicht mit UTF-8-Codierung gespeichert sind, Expand-Archive
wird der im Archiv gefundene Rohwert verwendet. Dies kann zu einem Dateinamen führen, der sich von dem im Archiv gespeicherten Quelldateinamen unterscheidet.