Запуск 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"