PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Compression ZIP simplement en Powershell

lundi 13 juin 2016 à 09:15

I. 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.