Compression ZIP simplement en Powershell

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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d'IT-Connect.fr et d'Information-security.fr. Auditeur sécurité chez Amossys.

    mickael a publié 475 articles sur IT-Connect.See all posts by mickael

    Une réaction sur “Compression ZIP simplement en Powershell

    • 13/10/2016 à 20:39
      Permalink

      Intéressant 🙂

      Il est également possible de travailler avec un ZIP hebdomadaire portant le numéro de la semaine en cours (numérotation ISO 8601, en usage en France), avec par exemple :

      $numSem = Get-Date -UFormat %V
      $destinationZip = « C:\Users\Mickael\Documents\archive-$numSem.zip »

      Répondre

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *