web-dev-qa-db-fra.com

Exécution de 7-Zip à partir d'un script Powershell

J'essaie d'utiliser 7-Zip pour sauvegarder certains fichiers dans un script Powershell (v2).

J'ai:

$zipPath = "C:\Program Files\7-Zip\7z.exe"
[Array]$zipArgs = "-mx=9 a", "`"c:\BackupFolder\backup.Zip`"", "`"c:\BackupFrom\backMeUp.txt`""

&$zipPath $zipArgs;

Mais quand je lance ceci, je reçois:

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18


Error:
Incorrect command line

En écrivant cela à l'écran, je reçois: 

C:\Program Files\7-Zip\7z.exe -mx=9 a "c:\BackupFolder\backup.Zip" "c:\BackupFrom\backMeUp.txt"

J'ai donc supposé que je devais mettre des guillemets autour du chemin vers 7z.exe, cela m'a donné:

$zipPath = "C:\Program Files\7-Zip\7z.exe"
$zipPath = " `"$zipPath`" "
[Array]$zipArgs = "-mx=9 a", "`"c:\BackupFolder\backup.Zip`"", "`"c:\BackupFrom\backMeUp.txt`""

&$zipPath $zipArgs;     

Mais alors j'obtiens l'erreur suivante:

    The term '"C:\Program Files\7-Zip\7z.exe"' is not recognized as the name of a cmdlet, function, script file
, or operable program. Check the spelling of the name, or if a path was included, verify that the path is c
orrect and try again.
At C:\BackupScript\Backup.ps1:45 char:22
+                     & <<<< `"$zipPath`" $zipArgs;                    
    + CategoryInfo          : ObjectNotFound: ("C:\Program Files\7-Zip\7z.exe":String) [], CommandNotFound 
   Exception
    + FullyQualifiedErrorId : CommandNotFoundException

L'écrire me donne:

"C:\Program Files\7-Zip\7z.exe" -mx=9 a "c:\BackupFolder\backup.Zip" "c:\BackupFrom\backMeUp.txt"

Ce qui fonctionne comme prévu lorsque vous collez directement dans une fenêtre de commande ... Je cherche à comprendre cela depuis un moment, mais je suppose qu'il me manque quelque chose (probablement assez évident). Quelqu'un peut-il voir ce que je dois faire pour réussir?

18
IGGt

Trouvé this script et l’adapte à vos besoins. Pouvez-vous s'il vous plaît essayer:

if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"} 
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"  

$Source = "c:\BackupFrom\backMeUp.txt" 
$Target = "c:\BackupFolder\backup.Zip"

sz a -mx=9 $Target $Source
43
DarkLite1

mettre "&" caractère spécial avant la commande 7z. Exemple: & 7z ...

8
Ric

Peut-être qu'une solution plus simple consiste à exécuter 7-Zip sur votre Powershell via cmd:

cmd /c 7za ...
2
Lars Bilke

essayez d'utiliser le paramètre -file pour spécifier l'emplacement du programme ou du script: 

-file "C:\Program Files\someting.exe"

0
trezor

Suffixe simplement la commande avec une esperluette

& "C:\Program Files\7-Zip\7z.exe" -mx=9 a "c:\BackupFolder\backup.Zip" "c:\BackupFrom\backMeUp.txt"
0
scarba05