103 votes

Comment compresser/décompresser des fichiers avec Powershell ?

Existe-t-il une ligne unique qui permet de compresser/décompresser des fichiers (*.zip) dans PowerShell ?

0 votes

153voto

Ameer Deen Points 3588

Voici comment vous pouvez le faire uniquement à partir de Powershell sans aucun outil externe. Cela dézippe un fichier appelé test.zip dans le répertoire de travail actuel :

$shell_app=new-object -com shell.application
$filename = "test.zip"
$zip_file = $shell_app.namespace((Get-Location).Path + "\$filename")
$destination = $shell_app.namespace((Get-Location).Path)
$destination.Copyhere($zip_file.items())

26 votes

Utiliser $destination.Copyhere($zip_file.items(), 0x10) pour écraser les fichiers existants. 0x4 cache la boîte de dialogue, et 0x14 combine les deux et écrase et cache la boîte de dialogue.

0 votes

Ok mais comment on dézippe ?

3 votes

La ligne $destination.Copyhere($zip_file.items()) fait le dézippage réel.

56voto

mousio Points 736

Maintenant, dans .NET Framework 4.5, il y a une ZipFile que vous pouvez utiliser comme ceci :

[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($sourceFile, $targetFolder)

0 votes

Il définitivement a fonctionné - je l'ai utilisé pour extraire plus de 400 fichiers zip. Je vais vérifier que je n'ai pas la version 4.5 ici, mais elle n'apparaît pas sous Microsoft.NET.

1 votes

Este serait Ce serait génial s'il y avait une méthode simple pour Extraire dans le répertoire et une option pour écraser tous les fichiers existants.

1 votes

Cela fonctionne avec .NET 4.5. Vous avez toutefois besoin de Powershell V3 également.

21voto

Jeremy Points 1287

DotNetZip vous permettra de le faire à partir de PowerShell. Ce n'est pas un one-liner, mais la bibliothèque vous permettra d'écrire le script PowerShell dont vous avez besoin.

Vous pouvez également utiliser l'interface COM, voir Compresser des fichiers avec Windows PowerShell puis emballer un gadget de la barre latérale de Windows Vista .

La recherche sur Google de "zip powershell" ou "unzip powershell" peut également donner des résultats utiles.

0 votes

+1 L'article lié a des tâches utiles contrairement à la réponse la plus votée.

7 votes

-1 pour avoir suggéré une recherche sur Google. Voici le premier résultat de StackExchange dans une recherche Google pour "unzip powershell".

19voto

Duck Points 1645

Je sais que c'est une très vieille question, mais je viens de la voir liée sur Twitter et je me suis dit que j'allais poster une réponse actuelle.

PowerShell 5, actuellement disponible sur Windows 10 ou par l'intermédiaire de l'application Aperçu de production de Windows Management Framework 5 Le site Web de l'Office de l'harmonisation dans le marché intérieur (OIT), qui est livré avec deux cmdlets intégrés pour "zipper" et "dézipper" :

5 votes

Il s'agit d'un bon pour apporter de nouvelles informations à de vieilles questions ;) +1

18voto

Kevin Colby Points 1750

Vous pouvez consulter le site Les extensions communautaires PowerShell (PSCX) qui dispose de cmdlets spécifiques pour cela.

1 votes

+1 PSCX est un excellent ensemble de cmdlets complémentaires. J'aimerais simplement pouvoir choisir ceux que je veux et ceux que je ne veux pas. Il semble que cela change beaucoup de choses dans mon instance Powershell.....

0 votes

Je suis tombé sur ce sujet parce que je veux en fait automatiser l'installation de PSCX si je le peux pour certains collègues de travail. Je l'essaie maintenant pour voir quel genre de problèmes je rencontre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X