Запуск 7-Zip из сценария Powershell

Я пытаюсь использовать 7-Zip для резервного копирования некоторых файлов внутри сценария Powershell (v2).

Я:

$zipPath = "C:Program Files-Zipz.exe"
[Array]$zipArgs = "-mx=9 a", "`"c:BackupFolderbackup.zip`"", "`"c:BackupFrombackMeUp.txt`""

&$zipPath $zipArgs;

но когда я запускаю это, я получаю:

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


Error:
Incorrect command line

записывая это на экран, я получаю:

C:Program Files-Zipz.exe -mx=9 a "c:BackupFolderbackup.zip" "c:BackupFrombackMeUp.txt"

поэтому я предположил, что мне нужно поставить кавычки вокруг пути к 7z.exe, что дал мне:

$zipPath = "C:Program Files-Zipz.exe"
$zipPath = " `"$zipPath`" "
[Array]$zipArgs = "-mx=9 a", "`"c:BackupFolderbackup.zip`"", "`"c:BackupFrombackMeUp.txt`""

&$zipPath $zipArgs;     

но затем я получаю следующую ошибку:

    The term '"C:Program Files-Zipz.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:BackupScriptBackup.ps1:45 char:22
+                     & <<<< `"$zipPath`" $zipArgs;                    
    + CategoryInfo          : ObjectNotFound: ("C:Program Files-Zipz.exe":String) [], CommandNotFound 
   Exception
    + FullyQualifiedErrorId : CommandNotFoundException

написание его дает мне:

"C:Program Files-Zipz.exe" -mx=9 a "c:BackupFolderbackup.zip" "c:BackupFrombackMeUp.txt"

работает как и ожидалось при вставке прямо в командном окне. Я пытаюсь понять это некоторое время, но предположим, что я что-то упускаю (вероятно, совершенно очевидно). Кто-нибудь видит, что мне нужно сделать, чтобы сбежать?

5 ответов


нашел этой скрипт и адаптирован к вашим потребностям. Не могли бы вы попробовать:

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

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

sz a -mx=9 $Target $Source

поместите специальный символ " & " перед командой 7z. Пример: &7z архивов ...


возможно, более простое решение-запустить 7-zip на Powershell через cmd:

cmd /c 7za ...

попробуйте использовать параметр -файл, чтобы указать расположение программы или скрипт:

-файл "C:\Program файлы\что-то.EXE-файл"


просто суффикс команды с амперсандом

& "C:\Program Files-Zipz.exe" -mx=9 a "c:\BackupFolder\backup.zip" "c:\BackupFrom\backMeUp.txt"