Existe-t-il une ligne unique qui permet de compresser/décompresser des fichiers (*.zip) dans PowerShell ?
Réponses
Trop de publicités?Je trouve que la solution la plus simple est d'utiliser les binaires infozip que j'utilise depuis des années et dans un environnement UNIX.
PS> zip -9r ../test.zip *
PS> cd ..
PS> unzip -t test.zip Archive: test.zip
testing: LinqRepository/ OK
testing: LinqRepository/ApplicationService.cs OK
testing: LinqRepository/bin/ OK
...
No errors detected in compressed data of test.zip.
Il serait facile de mettre un wrapper powershell autour de la sortie texte, mais en pratique, je n'en ai jamais eu besoin et je ne m'en suis pas soucié.
J'aime aussi Info-ZIP (le moteur Zip que l'on retrouve dans la plupart des autres utilitaires Zip) et 7-Zip un autre favori qui possède à la fois une interface graphique et un utilitaire Zip en ligne de commande. Le fait est qu'il existe de bons utilitaires en ligne de commande qui conviennent à la plupart des tâches PowerShell.
Il existe quelques astuces pour exécuter des utilitaires de ligne de commande qui n'ont pas été conçus avec PowerShell en tête :
-
Pour exécuter un exécutable dont le nom commence par un chiffre, faites-le précéder d'une esperluette (&).
&7zip.exe
-
Enveloppez chaque jeton, que l'utilitaire s'attend à voir sur la ligne de commande, entre guillemets.
&"c : \path avec l'espace \SomeCommand.exe " "/paramètre2" "/paramètre2" "Valeur du paramètre2" "Valeur2 `" avec une citation "
Essayez ça :
zip filename.zip (Get-ChildItem somepath\*)
Ou même :
zip filename.zip (Get-Content ListOfFiles.txt)
James Holwell J'aime votre réponse mais je l'ai un peu élargie.
# Example
#unzip "myZip.zip" "C:\Users\me\Desktop" "c:\mylocation"
function unzip($fileName, $sourcePath, $destinationPath)
{
$shell = new-object -com shell.application
if (!(Test-Path "$sourcePath\$fileName"))
{
throw "$sourcePath\$fileName does not exist"
}
New-Item -ItemType Directory -Force -Path $destinationPath -WarningAction SilentlyContinue
$shell.namespace($destinationPath).copyhere($shell.namespace("$sourcePath\$fileName").items())
}
L'approche ionique fonctionne :
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
supporte les mots de passe, les autres méthodes de cryptage, etc.
0 votes
Liés : Dézipper avec PS dans Server Core