Compress-Archive
Erstellt ein komprimiertes Archiv oder zippierte Datei aus angegebenen Dateien und Verzeichnissen.
Syntax
Path (Standardwert)
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
PathWithUpdate
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
-Update
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
PathWithForce
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
-Force
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPathWithUpdate
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
-Update
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPathWithForce
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
-Force
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPath
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Das Cmdlet Compress-Archive 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 Komprimierungsalgorithmus komprimiert werden, der durch den parameter CompressionLevel angegeben wird.
Das cmdlet Compress-Archive verwendet die System.IO.Compression.ZipArchive-API zum Komprimieren von Dateien.
Die API beschränkt die maximale Dateigröße auf 2 GB. Weitere Informationen finden Sie unter System.IO.Compression.ZipArchive.
Hinweis
Das Cmdlet Compress-Archive ignoriert ausgeblendete Dateien und Ordner beim Erstellen oder Aktualisieren der Archivdatei. Auf Nicht-Windows-Computern umfasst 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 Path nur Dateinamen angibt.
$compress = @{
Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Der parameter Path akzeptiert bestimmte Dateinamen und Dateinamen mit Wildcards, *.vsd. Der Path verwendet eine durch Trennzeichen getrennte Liste, um Dateien aus verschiedenen Verzeichnissen abzurufen. Die Komprimierungsebene ist schnellste, 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 Path 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 Path verwendet eine durch Trennzeichen getrennte Liste, um Dateien aus verschiedenen Verzeichnissen abzurufen. Die Komprimierungsebene ist schnellste, um die Verarbeitungszeit zu reduzieren. Der parameter DestinationPath gibt den Speicherort für die Draft.zip Datei an. Die Draft.zip Datei enthält nur 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 stammverzeichnis sowie alle zugehörigen Dateien und Unterverzeichnisse enthält. Die Archivdatei weist eine Verzeichnisstruktur auf, da der Path ein Stammverzeichnis angibt.
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip
Compress-Archive verwendet den Parameter Path, um das Stammverzeichnis C:\Referenceanzugeben. Der parameter DestinationPath gibt den Speicherort für die Archivdatei an. Das Draft.zip Archiv enthält das Reference Stammverzeichnis sowie 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 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 Parameter Path, um das Stammverzeichnis anzugeben, C:\Reference mit einem Sternchen (*) 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 Parameter Path, um das Stammverzeichnis anzugeben, C:\Reference mit einem Sternpunkt-Stern- (*.*) -Wildcard. 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 wird 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 Path 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 an Compress-Archivegesendet.
Die beiden angegebenen Dateien werden in PipelineFiles.ziparchiviert.
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--Objekts wird an die Pipeline gesendet.
Compress-Archive fügt jedes Objekt dem PipelineDir.zip Archiv hinzu. Der Path-Parameter ist 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. Wenn Sie z. B. Get-ChildItem mit dem Parameter Recurse verwenden. 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 verzeichnis C:\TestLog enthält keine Dateien. Es enthält ein Unterverzeichnis mit dem Namen testsub, das die testlog.txt Datei enthält.
Get-ChildItem verwendet den Parameter Path, um das Stammverzeichnis C:\TestLoganzugeben. Der Recurse Parameter verarbeitet die Dateien und Verzeichnisse. Ein DirectoryInfo-Objekt wird für testsub und ein FileInfo--Objekt testlog.txterstellt.
Jedes Objekt wird an Compress-Archivedie Pipeline gesendet. Der DestinationPath- gibt den Speicherort für die Archivdatei an. Der Path-Parameter ist nicht angegeben, da die Pipelineobjekte an Parameterposition 0 empfangen werden.
In der folgenden Zusammenfassung werden die Inhalte des PipelineRecurse.zip Archivs beschrieben, die eine duplizierte Datei enthalten:
- Das DirectoryInfo-Objekt erstellt das
testsubVerzeichnis und enthält dietestlog.txtDatei, die die ursprüngliche Verzeichnisstruktur widerspiegelt. - Das FileInfo-Objekt erstellt ein dupliziertes
testlog.txtim Stammverzeichnis des Archivs. Die duplizierte Datei wird erstellt, da rekursion ein Dateiobjekt anCompress-Archivegesendet hat. 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.zipim verzeichnis C:\Archives 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 aktualisiert Draft.zip mit neueren Versionen vorhandener Dateien im C:\Reference Verzeichnis und seinen Unterverzeichnissen. Und neue Dateien, die C:\Reference oder den Unterverzeichnissen hinzugefügt wurden, werden in das aktualisierte Draft.zip Archiv aufgenommen.
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:
- schnellste. 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.
- Keine Kompression. Komprimiert die Quelldateien nicht.
- Optimale. Die Verarbeitungszeit hängt von der Dateigröße ab.
Parametereigenschaften
| Typ: | String |
| Standardwert: | Optimal |
| Zulässige Werte: | Optimal, NoCompression, Fastest |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Confirm
Fordert Sie zur Bestätigung auf, bevor Sie das Cmdlet ausführen.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | vgl |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-DestinationPath
Dieser Parameter ist erforderlich und gibt den Pfad zur Archivausgabedatei an. Die 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 aufweist, fügt das Cmdlet die .zip Dateinamenerweiterung hinzu.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 1 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Force
Verwenden Sie diesen Parameter, um eine vorhandene Archivdatei zu überschreiben.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
PathWithForce
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
LiteralPathWithForce
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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 LiteralPath- genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Wildcards 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.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PSPath |
Parametersätze
LiteralPathWithUpdate
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
LiteralPathWithForce
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
LiteralPath
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-PassThru
Bewirkt, dass das Cmdlet ein Dateiobjekt ausgibt, das die erstellte Archivdatei darstellt.
Dieser Parameter wurde in PowerShell 6.0 eingeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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 stammverzeichnis und alle zugehörigen Dateien und Unterverzeichnisse enthält, geben Sie das Stammverzeichnis im Path ohne Wildcards an. Beispiel:
-Path C:\Reference - Um ein Archiv zu erstellen, das Stammverzeichnis ausschließt, aber alle zugehörigen Dateien und Unterverzeichnisse zippt, verwenden Sie das Sternchen (
*) -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\*.*
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
Path
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
PathWithUpdate
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
PathWithForce
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-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.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
PathWithUpdate
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
LiteralPathWithUpdate
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Wi |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
String
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.
FileInfo
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. Get-ChildItem mit dem parameter Recurse verwenden, wird jedes FileInfo- und DirectoryInfo-Objekt, das an die Pipeline gesendet wird, dem Archiv hinzugefügt.
Das Cmdlet Compress-Archive 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, verwendet Expand-Archive den im Archiv gefundenen Rohwert. Dies kann zu einem Dateinamen führen, der sich von dem im Archiv gespeicherten Quelldateinamen unterscheidet.