Compression ZIP simplement en Powershell
lundi 13 juin 2016 à 09:15I. Présentation
PowerShell est un langage puissant qui permet d’automatiser bien des actions sur les OS Windows. Aujourd’hui, nous allons voir comment utiliser PowerShell pour le backup et l’archivage, notamment via la compression ZIP. Nous utiliserons pour cela la fonction PowerShell « io.compression.zipfile« .
II. Compression ZIP via Powershell
Concrètement, ces deux lignes pourront nous permettre de compresser un dossier :
[Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" ) [System.IO.Compression.ZipFile]::CreateFromDirectory($sourceFolder, $destinationZip)
Naturellement, il faut pour cela définir les variables source et destination :
$sourceFolder = "C:\Users\Mickael\Pictures\" $destinationZip = "C:\Users\Mickael\Documents\archive.zip" [Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" ) [System.IO.Compression.ZipFile]::CreateFromDirectory($sourceFolder, $destinationZip)
L’exécution de ces quelques lignes compressera le dossier « C:\Users\Mickael\Pictures » dans l’archive « archive.zip« .
III. Fonction de compression
Nous pouvons très rapidement en faire une fonction :
function backupMe ($backupDir, $destinationFile) { [Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" ) [System.IO.Compression.ZipFile]::CreateFromDirectory($sourceFolder, $destinationZip) }
Celle-ci pourra donc être appelée via le code suivant à condition que les variables « sourceFolder » et « destinationZip » soient définies :
backupMe($sourceFolder, $destinationZip)
Une petite amélioration supplémentaire qui peut être effectuée est d’ajouter une date au nommage de l’archive, cela permettra d’avoir un versionning très facilement et de ne pas avoir à supprimer l’ancienne archive lors d’une seconde exécution :
$Today = Get-Date -UFormat "%Y-%m-%d" $sourceFolder = "C:\Users\Mickael\Pictures\" $destinationZip = "C:\Users\Mickael\Documents\archive-$Today.zip" backupMe($sourceFolder, $destinationZip)
J’espère que ces quelques lignes vous serons utiles ! N’hésitez pas à proposer vos améliorations dans le forum ou les commentaires.