Compress-Archive

Crée une archive compressée ou un fichier compressé à partir de fichiers et de répertoires spécifiés.

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>]

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-Archiveutilise 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-Archiveutilise 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-Archiveutilise 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-ChildItemutilise 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.txtFileInfo.

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 le testlog.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.zipdans 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
Accepted values:Optimal, NoCompression, Fastest
Position:Named
Default value:Optimal
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Vous demande une confirmation avant d’exécuter l’applet de commande.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Force

Utilisez ce paramètre pour remplacer un fichier d’archivage existant.

Type:SwitchParameter
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters: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[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters: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
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entrées

String

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.

FileInfo

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.