Il peut parfois être utile de créer par programmation des archives zip ou d’extraire des fichiers d’archives existantes. Windows PowerShell 5.0 a ajouté deux cmdlets pour ce faire. La cmdlet Compress-Archive vous permet de créer de nouvelles archives à partir de dossiers ou de fichiers individuels et d’ajouter des fichiers aux archives ; Extract-Archive peut être utilisée pour décompresser des fichiers.
Si vous n’avez pas déjà PowerShell 5.0 ou une version ultérieure installée sur vos systèmes, vous pouvez télécharger la dernière version du cadre de gestion Windows sur le site Web de Microsoft ici.
Utiliser PowerShell pour créer des fichiers Zip
Commençons par utiliser PowerShell pour compresser les fichiers dans une nouvelle archive zip. Il suffit 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 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, nous pourrions compresser les fichiers du dossier Invoices individuellement en utilisant -LiteralPath au lieu de -Path. Cette commande crée une archive avec seulement les deux fichiers explicitement listés dans le paramètre -LiteralPath:
Compress-Archive -LiteralPath C:\ Invoices\File1.txt, C:\Invoices\File2.txt -DestinationPath C:\Archives\Invoices -Force
Notez que j’ai ajouté le paramètre -Force pour écraser l’archive que j’ai créée à l’aide de la première commande. Sans le paramètre -Force, vous ne pouvez pas écraser les archives existantes et PowerShell vous invitera à ajouter des fichiers à l’archive à la place.
Pour ajouter des fichiers à une archive, utilisez le paramètre -Update. La commande ci-dessous ajoute tous les fichiers du dossier Invoices à mon archive existante Invoices.zip:
Compress-Archive -Path C:\Invoices\* -Update -DestinationPath C:\Archives\Invoices
Optionnellement, vous pouvez utiliser le paramètre -CompressionLevel avec l’une des trois valeurs suivantes : Optimal, NoCompression ou Fastest. Optimal est le paramètre par défaut si le paramètre -CompressionLevel n’est pas défini ; il utilise la meilleure compression disponible, mais cela peut prendre plus de temps que l’utilisation de Fastest. Pour créer une archive sans compression, utilisez la valeur NoCompression.
Utiliser PowerShell pour décompresser des fichiers
Extraire des fichiers d’une archive est encore plus facile que d’en créer une. Tout ce que vous avez à faire est de spécifier le nom de l’archive et le dossier de destination des fichiers décompressés. La commande ci-dessous extrait le contenu de l’archive Invoices.zip vers un dossier nommé InvoicesUnzipped à l’aide du cmdlet Expand-Archive.
Expand-Archive -LiteralPath C:\Archives\Invoices.Zip -DestinationPath C:\ InvoicesUnzipped
Le dossier dans lequel vous souhaitez décompresser les fichiers n’a pas besoin d’exister ; Expand-Archive le créera automatiquement si nécessaire. Mais si les fichiers que vous voulez décompresser existent déjà dans le dossier de destination, Expand-Archive renverra une erreur. Vous pouvez écraser les fichiers du dossier de destination en ajoutant le paramètre -Force à la commande.