Question [MAJ V1.1][Module] Gestion des zip (IOnic.Zip.dll)

Plus d'informations
il y a 11 ans 9 mois #12087 par Matthew BETTON
[edit] MAJ le 22/06/2012 (prise en compte des commentaires de Laurent Dardenne, que je remercie).

Bonsoir,

Ci-après un module qui permet de gérer des archives zip à l'aide la dll 'IOnic.Zip.dll' issue du projet DotNetZip. Pour pouvoir utiliser ce module il faut la télécharger à cette adresse .

Pour l'utiliser, il suffit de créer un sous répertoire \"IOnicZip\" dans le répertoire des modules \"C:\Windows\System32\WindowsPowerShell\v1.0\Modules\", d'y placer le script module 'IonicZip.psm1' ainsi que la DLL 'Ionic.Zip.dll'.

Ce module ne contient évidemment pas toutes les fonctionnalités permises par la librairie 'IOnic.Zip.dll'. Aussi, il peut être modifié, évoluer...

Merci d'avance pour vos retours.

Lien de téléchargement pour IonicZip_psm1.zip


Quelques usages (Pour plus de détails, voir Command Based Help via Get-Help sur Cmdlets):

[code:1]
# Importer le module pour pouvoir utiliser les Cmdlet
# il est possible d'ajouter cette ligne dans l'un des profils PowerShell pour qu'il soit systématiquement chargé, à l'ouverture d'une console PoSh
Import-Module ioniczip

# Affiche le contenu du fichier zip
Get-ZipContent -FilePath \"D:\MyZipFile.zip\" -list

# Créer un nouveau Zip et encrypte le contenu avec un mot de passe
Set-ZipContent -Source \"D:\File.dat\" -Destination \"D:\MyZipFile.zip\" -Password \"MyPassword!\"

# Récupère le contenu du répertoire et l'ajoute à un fichier ZIP. S'il existe déjà, les données sont ajoutées. Si ce n'est pas le cas, le zip est créé
Get-ChildItem D:\sources | Add-ZipContent -Source {$_.FullName} -Destination d:\sources.zip

# Idem exemple précédent. Ici les données sont encryptés via la méthode d'encryptage WinZipAes256.
Add-ZipContent -Source \"D:\File.dat\" -Destination \"D:\MyZipFile.zip\" -Password 'MyPassword!' -Encryption WinZipAes256

# Extrait le contenu du fichier zip dans le répertoire \"E:\Data\"
Expand-Zip -Source \"D:\File.zip\" -Destination \"E:\Data\"

# Extrait le contenu du fichier zip dans le répertoire \"E:\Data\", en spécifiant un mot de passe et en indiquant que les données de destination déjà existantes peuvent être écrasées.
Expand-Zip -Source \"D:\File.zip\" -Destination \"E:\Data\" -Force -Password \"Password!\"

[/code:1]

[edit]
Prise en compte des commentaires de Laurent du 22/06 (voir plus bas).

[edit]
Ajout du script en pièce jointe afin d'éviter toute modification du code par Joomla .

@+

Matthew<br><br>Message édité par: Matthew BETTON, à: 24/06/12 14:21

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 9 mois #12089 par Laurent Dardenne
Salut Matthew,
çà m'a l'air bien.
Je procéde comment, si c'est possible, pour créer une archive via le pipe, du genre :
[code:1]
Dir *.dll,*.res| \&quot;create-zip\&quot;
New-Setup -AllFiles | \&quot;create-zip\&quot;
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 9 mois #12091 par Matthew BETTON
Salut Laurent,

Pour générer une archive via le pipe, il faut utiliser la fonction / Cmdlet Add-ZipContent.

Les exemples sont donnés dans les commands based help.

[code:1]
.Example
\&quot;.\temp\&quot; | Add-ZipContent -Destination D:\TempFile.zip

Adds temp directory and all its content from current path folder to a 'D:\TempFile.zip'.
.Example
Get-ChildItem D:\sources | ForEach-Object{Add-ZipContent -Source $_.FullName -Destination d:\sources.zip}
Get-ChildItem D:\sources | ForEach-Object{$_.FullName} | Add-ZipContent -Destination d:\sources.zip

Those two commands both get files and sub-folders in D:\Sources and compress them in D:\Sources.zip
.Example
Get-ChildItem D:\sources | ForEach-Object{$_.FullName} | Add-ZipContent -Destination d:\sources.zip -Update -Password \&quot;password!\&quot;

Gets files and sub-folders in D:\Sources and compress them in D:\Sources.zip.
Already existing files in the zip file archive will be updated.
All datas will be encrypted with a password.

[/code:1]

Ici, il s'agit de texte : c'est le nom du chemin à compresser qu'il faut transmettre à la commande. J'ai pensé à donner la possibilité de récupérer depuis le pipe des objets du type [System.IO.FileInfo] ou [System.IO.DirectoryInfo].... Code à faire évoluer :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 9 mois #12094 par SiSMik
J'utilise déjà cette dll dans bon nombre de scripts, bien cool ce petit moduie et :woohoo: voilà comment c'est documenté !!

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 9 mois #12099 par Richard Lazaro
Laurent qui ramasse un RTFM, c'est magique :']
En tout cas, tout cela a l'air bien sympa.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\&quot;Problems cannot be solved by the same level of thinking that created them.\\&quot; - Albert Einstein

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 9 mois #12102 par Laurent Dardenne
Richard Lazaro écrit:

Laurent qui ramasse un RTFM, c'est magique :']

Faut juste être patient ;)
Hier soir, après 8 heures de codage, j'avais un peu de mal %-)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 2.728 secondes
Propulsé par Kunena