12 06 2013
PowerShell 3.0: Zipper et Dé-zipper des fichiers
Lorsqu’il s’agit d’archiver des fichiers de logs, une fonction bien utile serait de pouvoir compresser un répertoire pour économiser de la place. Voici une astuce pour zipper fichiers et dossiers sous PowerShell (3.0).
Prérequis:
Pour que ces fonctions soient utilisable, veuillez vous assurer de bien avoir:
- Powershell 3.0
- .Net Framework 4.5
Dans vos scripts:
Tout d’abord, il faut ajouter à vos script les fonctions suivante:
New-ZipFile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function New-ZipFile { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [string] [ValidateNotNullOrEmpty()] $Name, [Parameter(Mandatory=$true)] [string] [ValidateNotNullOrEmpty()] $Source ) [Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" ) $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal [System.IO.Compression.ZipFile]::CreateFromDirectory( $Source, $Name, $compressionLevel, $false ) Get-Item $Name } |
Extract-ZipFile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function Extract-ZipFile { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [string] [ValidateNotNullOrEmpty()] $Name, [Parameter(Mandatory=$true)] [string] [ValidateNotNullOrEmpty()] $Destination ) [Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" ) [System.IO.Compression.ZipFile]::ExtractToDirectory($Name,$Destination) Get-Item $Destination } |
Ensuite il suffit pour zipper un répertoire ou un fichier de taper:
1 |
New-ZipFile -Name C:DestinationFoldernom_du_zip.zip -Source C:Repertoire_ou_fichier_a_zipper |
Pour extraire:
1 |
Extract-ZipFile -Name C:DestinationFoldernom_du_zip.zip -Destination C:Repertoire_de_destination |
Sources:
http://stackoverflow.com/a/13302548
http://msdn.microsoft.com/fr-fr/library/hh881203.aspx
Article initialement publié sur blog.sogeti.ch
SCDPM 2012 SP1: Calculer la taille des backups Hyper-V sur disque Windows Server 2012 Core: Comment fermer une session RDP en mode Core ?
[…] n’a jamais rêvé de pouvoir travailler avec un fichier zip en PowerShell ? Maintenant vous pourrez, nativement, zipper, dézipper, […]