Compress-Archive
Crée une archive compressée ou un fichier compressé à partir de fichiers et de répertoires spécifiés.
Syntaxe
Path (Par défaut)
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>]
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 À propos de la projection.
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 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. *.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. 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 caractère générique astérisque (*). 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 caractère générique astérisque (*). 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 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 .
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
testsubrépertoire et contient letestlog.txtfichier, qui reflète la structure de répertoires d’origine. - L’objet FileInfo crée un doublon
testlog.txtdans 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.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | Optimal |
| Valeurs acceptées: | Optimal, NoCompression, Fastest |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Confirm
Vous invite à confirmer avant d’exécuter l’applet de commande.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | False |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | cf |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | 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.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 1 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Force
Utilisez ce paramètre pour remplacer un fichier d’archivage existant.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | False |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
PathWithForce
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
LiteralPathWithForce
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | 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 telle qu'elle est saisie. 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.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | PSPath |
Jeux de paramètres
LiteralPathWithUpdate
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
LiteralPathWithForce
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
LiteralPath
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | 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.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | False |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | 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. Les caractères génériques vous permettent d’ajouter tous les fichiers d’un répertoire à votre fichier d’archivage.
L’utilisation de caractères génériques 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ères génériques. 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 le caractère générique astérisque (
*). 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 (
*.*). Les sous-répertoires de la racine ne sont pas inclus dans l’archive. Par exemple :-Path C:\Reference\*.*
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | True |
| DontShow: | False |
Jeux de paramètres
Path
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
PathWithUpdate
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
PathWithForce
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-Update
Met à jour l’archive spécifiée en remplaçant les versions de fichiers plus anciennes dans l’archive par des versions de fichiers plus récentes portant les mêmes noms. Vous pouvez également ajouter ce paramètre pour ajouter des fichiers à une archive existante.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | False |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
PathWithUpdate
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
LiteralPathWithUpdate
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-WhatIf
Affiche ce qui se passerait si l’applet de commande s’exécute. L’applet de commande n’est pas exécutée.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | False |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | Wi |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
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 Compress-Archive utilise l’encodage 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.