Compress-Archive
Crée une archive compressée ou un fichier compressé à partir de fichiers et de répertoires spécifiés.
Syntaxe
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>]
Description
L’applet Compress-Archive
de commande crée un fichier compressé ou compressé, archivé à partir d’un ou de plusieurs fichiers ou répertoires spécifiés. Une archive empaquette plusieurs fichiers, avec compression facultative, dans un fichier compressé unique pour faciliter la distribution et le stockage. Un fichier d’archive peut être compressé à l’aide de l’algorithme de compression spécifié par le paramètre CompressionLevel .
L’applet Compress-Archive
de commande utilise l’API System.IO.Compression.ZipArchive pour compresser les fichiers.
L’API limite la taille maximale du fichier à 2 Go. Pour plus d’informations, consultez System.IO.Compression.ZipArchive.
Remarque
L’applet Compress-Archive
de commande ignore les fichiers et dossiers masqués lors de la création ou de la mise à jour du fichier d’archivage. Sur les ordinateurs non-Windows, cela inclut des fichiers et des dossiers portant le nom commençant par le caractère point (.
).
Pour vous assurer que les fichiers et dossiers masqués sont compressés dans l’archive, utilisez l’API .NET à la place.
Certains exemples utilisent la mise en forme pour réduire la longueur de ligne des exemples de code. Pour plus d’informations, consultez about_Splatting.
Exemples
Exemple 1 : Compresser des fichiers pour créer un fichier d’archivage
Cet exemple compresse les fichiers à partir de différents répertoires et crée un fichier d’archivage. Un caractère générique carte est utilisé pour obtenir tous les fichiers avec une extension de fichier particulière. Il n’existe aucune structure de répertoire dans le fichier d’archive, car le chemin d’accès spécifie uniquement les noms de fichiers.
$compress = @{
Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Le paramètre Path accepte des noms de fichiers et des noms de fichiers spécifiques avec des caractères génériques carte, *.vsd
. Le chemin utilise une liste séparée par des virgules pour obtenir des fichiers à partir de différents répertoires. Le niveau de compression est le plus rapide pour réduire le temps de traitement. Le paramètre DestinationPath spécifie l’emplacement du Draft.zip
fichier. Le Draft.zip
fichier contient Draftdoc.docx
et tous les fichiers avec une .vsd
extension.
Exemple 2 : Compresser des fichiers à l’aide d’un LittéralPath
Cet exemple compresse des fichiers nommés spécifiques et crée un fichier d’archivage. Il n’existe aucune structure de répertoire dans le fichier d’archive, car le chemin d’accès spécifie uniquement les noms de fichiers.
$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Le chemin d’accès absolu et les noms de fichiers sont utilisés, car le paramètre LiteralPath n’accepte pas les caractères génériques carte s. Le chemin utilise une liste séparée par des virgules pour obtenir des fichiers à partir de différents répertoires. Le niveau de compression est le plus rapide pour réduire le temps de traitement. Le paramètre DestinationPath spécifie l’emplacement du Draft.zip
fichier. Le Draft.zip
fichier contient Draftdoc.docx
uniquement et diagram2.vsd
.
Exemple 3 : Compresser un répertoire qui inclut le répertoire racine
Cet exemple compresse un répertoire et crée un fichier d’archive qui inclut le répertoire racine, ainsi que tous ses fichiers et sous-répertoires. Le fichier archive a une structure de répertoires, car le chemin d’accès spécifie un répertoire racine.
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip
Compress-Archive
utilise le paramètre Path pour spécifier le répertoire racine. C:\Reference
Le paramètre DestinationPath spécifie l’emplacement du fichier d’archivage. L’archive Draft.zip
inclut le Reference
répertoire racine, ainsi que tous ses fichiers et sous-répertoires.
Exemple 4 : Compresser un répertoire qui exclut le répertoire racine
Cet exemple compresse un répertoire et crée un fichier d’archive qui exclut le répertoire racine, car le chemin utilise un astérisque (*
) wild carte. L’archive contient une structure de répertoires qui contient les fichiers et sous-répertoires du répertoire racine.
Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
utilise le paramètre Path pour spécifier le répertoire racine, C:\Reference
avec un astérisque (*
) wild carte. Le paramètre DestinationPath spécifie l’emplacement du fichier d’archivage. L’archive Draft.zip
contient les fichiers et sous-répertoires du répertoire racine. Le Reference
répertoire racine est exclu de l’archive.
Exemple 5 : Compresser uniquement les fichiers d’un répertoire racine
Cet exemple compresse uniquement les fichiers d’un répertoire racine et crée un fichier d’archivage. Il n’existe aucune structure de répertoires dans l’archive, car seuls les fichiers sont compressés.
Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
utilise le paramètre Path pour spécifier le répertoire racine, C:\Reference
avec une étoile-point-étoile (*.*
) wild carte. Le paramètre DestinationPath spécifie l’emplacement du fichier d’archivage. L’archive Draft.zip
contient uniquement les Reference
fichiers du répertoire racine et le répertoire racine est exclu.
Exemple 6 : Utiliser le pipeline pour archiver des fichiers
Cet exemple envoie des fichiers vers le bas du pipeline pour créer une archive. Il n’existe aucune structure de répertoire dans le fichier d’archive, car le chemin d’accès spécifie uniquement les noms de fichiers.
Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip
Get-ChildItem
utilise le paramètre Path pour spécifier deux fichiers provenant de répertoires différents. Chaque fichier est représenté par un objet FileInfo et envoie le pipeline vers Compress-Archive
.
Les deux fichiers spécifiés sont archivés dans PipelineFiles.zip
.
Exemple 7 : Utiliser le pipeline pour archiver un répertoire
Cet exemple envoie un répertoire vers le bas du pipeline pour créer une archive. Les fichiers sont envoyés en tant qu’objets FileInfo et répertoires en tant qu’objets DirectoryInfo . La structure de répertoires de l’archive n’inclut pas le répertoire racine, mais ses fichiers et sous-répertoires sont inclus dans l’archive.
Get-ChildItem -Path C:\LogFiles |
Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip
Get-ChildItem
utilise le paramètre Path pour spécifier le C:\LogFiles
répertoire racine. Chaque objet FileInfo et DirectoryInfo est envoyé vers le bas du pipeline.
Compress-Archive
ajoute chaque objet à l’archive PipelineDir.zip
. Le paramètre Path n’est pas spécifié, car les objets de pipeline sont reçus à la position de paramètre 0.
Exemple 8 : Comment la récursivité peut affecter les archives
Cet exemple montre comment la récursivité peut dupliquer des fichiers dans votre archive. Par exemple, si vous utilisez Get-ChildItem
le paramètre Recurse . Comme processus de récursivité, chaque objet FileInfo et DirectoryInfo est envoyé vers le bas du pipeline et ajouté à l’archive.
Get-ChildItem -Path C:\TestLog -Recurse |
Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip
Le C:\TestLog
répertoire ne contient aucun fichier. Il contient un sous-répertoire nommé testsub
qui contient le testlog.txt
fichier.
Get-ChildItem
utilise le paramètre Path pour spécifier le répertoire racine. C:\TestLog
Le paramètre Recurse traite les fichiers et les répertoires. Un objet DirectoryInfo est créé pour testsub
et un objet testlog.txt
FileInfo.
Chaque objet est envoyé vers le bas du pipeline vers Compress-Archive
. DestinationPath spécifie l’emplacement du fichier d’archivage. Le paramètre Path n’est pas spécifié, car les objets de pipeline sont reçus à la position de paramètre 0.
Le résumé suivant décrit le contenu de l’archive PipelineRecurse.zip
qui contient un fichier en double :
- L’objet DirectoryInfo crée le
testsub
répertoire et contient letestlog.txt
fichier, qui reflète la structure de répertoires d’origine. - L’objet FileInfo crée un doublon
testlog.txt
dans la racine de l’archive. Le fichier en double est créé, car la récursivité a envoyé un objet de fichier àCompress-Archive
. Ce comportement est attendu, car chaque objet envoyé vers le bas du pipeline est ajouté à l’archive.
Exemple 9 : Mettre à jour un fichier d’archivage existant
Cet exemple met à jour un fichier d’archive existant, Draft.zip
dans le C:\Archives
répertoire. Dans cet exemple, le fichier d’archive existant contient le répertoire racine et ses fichiers et sous-répertoires.
Compress-Archive -Path C:\Reference -Update -DestinationPath C:\Archives\Draft.zip
La commande est mise à jour Draft.zip
avec des versions plus récentes de fichiers existants dans le C:\Reference
répertoire et ses sous-répertoires. De nouveaux fichiers ajoutés ou C:\Reference
ses sous-répertoires sont également inclus dans l’archive mise à jour Draft.zip
.
Paramètres
-CompressionLevel
Spécifie la quantité de compression à appliquer lorsque vous créez le fichier d’archivage. La compression plus rapide nécessite moins de temps pour créer le fichier, mais peut entraîner des tailles de fichier plus importantes.
Si ce paramètre n’est pas spécifié, la commande utilise la valeur par défaut, Optimal.
Voici les valeurs acceptables pour ce paramètre :
- Le plus rapide. Utilisez la méthode de compression la plus rapide disponible pour réduire le temps de traitement. Une compression plus rapide peut entraîner des tailles de fichiers plus grandes.
- NoCompression. Ne compresse pas les fichiers sources.
- Optimal. Le temps de traitement dépend de la taille du fichier.
Type: | String |
Valeurs acceptées: | Optimal, NoCompression, Fastest |
Position: | Named |
Valeur par défaut: | Optimal |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Confirm
Vous demande une confirmation avant d’exécuter l’applet de commande.
Type: | SwitchParameter |
Alias: | cf |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-DestinationPath
Ce paramètre est obligatoire et spécifie le chemin d’accès au fichier de sortie d’archive. DestinationPath doit inclure le nom du fichier compressé, ainsi que le chemin absolu ou relatif du fichier compressé.
Si le nom de fichier dans DestinationPath n’a pas d’extension .zip
de nom de fichier, l’applet de commande ajoute l’extension de .zip
nom de fichier.
Type: | String |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Force
Utilisez ce paramètre pour remplacer un fichier d’archivage existant.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-LiteralPath
Spécifie le chemin d’accès ou les chemins d’accès aux fichiers que vous souhaitez ajouter au fichier compressé archive. Contrairement au paramètre Path , la valeur de LiteralPath est utilisée exactement comme elle est typée. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin inclut des caractères d’échappement, placez chaque caractère d’échappement entre guillemets simples pour indiquer à PowerShell de ne pas interpréter de caractères comme séquences d’échappement. Pour spécifier plusieurs chemins d’accès et inclure des fichiers à plusieurs emplacements dans votre fichier compressé de sortie, utilisez des virgules pour séparer les chemins.
Type: | String[] |
Alias: | PSPath |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-PassThru
Provoque la sortie de l’applet de commande d’un objet de fichier représentant le fichier d’archivage créé.
Ce paramètre a été introduit dans PowerShell 6.0.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Path
Spécifie le chemin d’accès ou les chemins d’accès aux fichiers que vous souhaitez ajouter au fichier compressé archive. Pour spécifier plusieurs chemins d’accès et inclure des fichiers à plusieurs emplacements, utilisez des virgules pour séparer les chemins.
Ce paramètre accepte les caractères génériques carte. Les caractères génériques carte vous permettent d’ajouter tous les fichiers d’un répertoire à votre fichier d’archivage.
L’utilisation de wild carte s avec un répertoire racine affecte le contenu de l’archive :
- Pour créer une archive qui inclut le répertoire racine et tous ses fichiers et sous-répertoires, spécifiez le répertoire racine dans le chemin d’accès sans caractère générique carte s. Par exemple :
-Path C:\Reference
- Pour créer une archive qui exclut le répertoire racine, mais compresse tous ses fichiers et sous-répertoires, utilisez l’astérisque (
*
) wild carte. Par exemple :-Path C:\Reference\*
- Pour créer une archive qui compresse uniquement les fichiers dans le répertoire racine, utilisez le caractère générique () star-dot-star (
*.*
) wild carte. Les sous-répertoires de la racine ne sont pas inclus dans l’archive. Par exemple :-Path C:\Reference\*.*
Type: | String[] |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | True |
-Update
Mises à jour l’archive spécifiée en remplaçant les versions de fichiers antérieures dans l’archive par les versions de fichiers plus récentes qui ont les mêmes noms. Vous pouvez également ajouter ce paramètre pour ajouter des fichiers à une archive existante.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-WhatIf
Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.
Type: | SwitchParameter |
Alias: | wi |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez diriger une chaîne qui contient un chemin d’accès à un ou plusieurs fichiers.
Sorties
None
Par défaut, cette applet de commande ne retourne aucune sortie.
Lorsque vous utilisez le paramètre PassThru , cette applet de commande retourne un objet FileInfo .
Notes
L’utilisation de la récursivité et l’envoi d’objets vers le bas du pipeline peuvent dupliquer des fichiers dans votre archive. Par exemple, si vous utilisez Get-ChildItem
le paramètre Recurse , chaque objet FileInfo et DirectoryInfo envoyé dans le pipeline est ajouté à l’archive.
L’applet de commande utilise l’encodage Compress-Archive
UTF-8. D’autres outils d’archivage ZIP peuvent utiliser un autre schéma d’encodage. Lors de l’extraction de fichiers avec des noms de fichiers non stockés à l’aide de l’encodage UTF-8, Expand-Archive
utilise la valeur brute trouvée dans l’archive. Cela peut entraîner un nom de fichier différent du nom de fichier source stocké dans l’archive.