Запуск 7-Zip изнутри Powershell script

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

У меня есть:

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

&$zipPath $zipArgs;

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

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


Error:
Incorrect command line

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

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

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

$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;     

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

    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

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

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

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

Ответ 1

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

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

Ответ 2

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

Ответ 3

Возможно, более простым решением является запуск 7-zip на PowerShell через cmd:

cmd /c 7za ...

Ответ 4

Просто добавьте к команде префикс с амперсандом

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

Ответ 5

попробуйте использовать файл параметров для указания местоположения программы или script:

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