Créer des archives ZIP et décompresser des fichiers à l’aide de PowerShell

Il peut parfois être utile de créer des archives ZIP ou d’extraire des fichiers d’archives existantes par programmation. Windows PowerShell 5.0 vous propose deux nouveaux cmdlets pour cela. Le cmdlet Compress-Archive permet de créer de nouvelles archives à partir de dossiers ou de fichiers individuels et d’ajouter des fichiers à des archives ; Extract-Archive permet de décompresser des fichiers.

Si vous n’avez pas déjà installé PowerShell 5.0 ou une version ultérieure sur vos systèmes, vous pouvez télécharger la dernière version de Windows Management Framework depuis le site Microsoft en cliquant ici.

Créer des archives ZIP à l’aide de PowerShell

Commençons par utiliser PowerShell pour compresser des fichiers dans une nouvelle archive ZIP. Il suffit pour cela d’utiliser le paramètre -Path pour spécifier le dossier à compresser et le paramètre -DestinationPath pour spécifier le nom de l’archive à créer. La commande ci-dessous va compresser le dossier Invoices (Factures) dans le répertoire racine C et créer une archive appelée Invoices.zip dans le dossier Archives :

Compress-Archive -Path C:\Invoices -DestinationPath C:\Archives\Invoices

Alternativement, vous pouvez compresser les fichiers du dossier Invoices individuellement en utilisant -LiteralPath au lieu de -Path. La commande suivante crée une archive avec uniquement les deux fichiers mentionnés dans le paramètre -LiteralPath :

Compress-Archive -LiteralPath C:\ Invoices\File1.txt, C:\Invoices\File2.txt -DestinationPath C:\Archives\Invoices -Force

Remarquez que j’ai ajouté le paramètre -Force pour écraser l’archive que j’avais créée avec la première commande. Sans ce paramètre -Force, les archives existantes ne peuvent pas être écrasées et PowerShell vous demande alors d’ajouter les fichiers à l’archive.

Pour ajouter des fichiers à une archive, utilisez le paramètre -Update. La commande ci-dessous ajoute tous les fichiers du dossier Invoices à mon archive Invoices.zip :

Compress-Archive -Path C:\Invoices\* -Update -DestinationPath C:\Archives\Invoices

En option, vous pouvez utiliser le paramètre -CompressionLevel assorti de l’une des trois valeurs suivantes : Optimal, NoCompression (sans compression) ou Fastest (le plus rapide). Si le paramètre -CompressionLevel n’est pas défini, Optimal est le paramètre par défaut ; il utilise la meilleure compression possible, mais cela peut prendre plus de temps qu’avec Fastest. Pour créer une archive sans compression, utilisez la valeur NoCompression.

Décompresser des fichiers à l’aide de PowerShell

Extraire des fichiers d’une archive est encore plus facile que de créer une archive. Il suffit de spécifier le nom de l’archive et le dossier de destination des fichiers décompressés. La commande suivante va extraire le contenu de l’archive Invoices.zip dans un dossier nommé InvoicesUnzipped en utilisant le cmdlet Expand-Archive.

Expand-Archive -LiteralPath C:\Archives\Invoices.Zip -DestinationPath C:\ InvoicesUnzipped

Il n’est pas nécessaire que le dossier dans lequel vous souhaitez décompresser les fichiers existe déjà ; Expand-Archive créera automatiquement un dossier si nécessaire. Mais si les fichiers à décompresser se trouvent déjà dans le dossier de destination, Expand-Archive va renvoyer une erreur. Vous pouvez écraser les fichiers du dossier de destination en ajoutant le paramètre -Force à la commande.