在Powershell中引用疯狂

时间:2012-02-10 20:02:10

标签: powershell

我在PowerShell中使用invoke-expression来创建存档,但由于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)

当我运行脚本时,我收到此错误:

  

术语“a”未被识别为cmdlet函数的名称,   脚本文件或可操作程序。检查名称的拼写,或   如果包含路径,请验证路径是否正确并尝试   再次。在行:1 char:3   + a<<<<< C:\ Users \用户Echilon \文件\ Coding_Projects \ MyApp的\主干\ DIST \ C   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 个答案:

答案 0 :(得分:4)

通过使用调用运算符&,您可以更轻松地使用它。

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