Ответить с цитированием

Я использую invoke-expression в PowerShell для создания архива, но он не работает из-за пробелов в пути EXE. Это мои переменные:

Set-Variable -name DIRRELEASE       -value (Join-Path $env:UserProfile "\Documents\Coding\_Projects\ChickenPing\trunk\Dist\current\")
$srcPath = (Join-Path $DIRRELEASE ("myapp_1.90-src.zip"))
Set-Variable -name WinRarFilter     -value "-x*\.svn -x*\.svn\* -x*\nutrition.db3"
Set-Variable -name WinRarOpts       -value "-r -s -m5 -inul"
$WinRar = `"C:\Program Files\Winrar\winrar.exe`"

#Then using this to invoke:
Invoke-Expression ($WinRAR + " a " + $srcPath + " " + $WinRARFilter + " * " + $WinRAROpts)

Когда я запускаю script, я получаю эту ошибку:

Термин "a" не распознается как имя командлета, функции, script файл или операционная программа. Проверьте правильность написания имени или если путь был включен, убедитесь, что путь правильный и попробуйте еще раз. По строке: 1 char: 3 + < < C:\Users\Echilon\Documents\Coding_Projects\MyApp\ствол\Dist\с urrent\myapp_1.95-src.zip -x *.svn -x *.svn * -x *\nutrition.db3 * -r -s - m5 -inul     + CategoryInfo: ObjectNotFound: (a: String) [], CommandNotFoundEx ception     + FullyQualifiedErrorId: CommandNotFoundException

Я просто не могу найти правильную комбинацию кавычек и плюсов.

Ответ 1

С этим оператором вызова & вы можете упростить работу с ним.

& $WinRAR a $srcPath "-x*\.svn" "-x*\.svn\*" "-x*\nutrition.db3" *  -r -s -m5 -inul