括号或引号打破了powershell命令

时间:2012-08-01 10:49:07

标签: powershell

我知道这一定很简单,但我无法弄明白该怎么做。我在通过XML读取的变量中有一个字符串。该变量称为$ software,其值为Java Flash Reader“Flash(IE)”

然后从命令行启动它:

C:\Deployment\Ninite\NiniteOne.exe /select $xmlsoftware $installtype /remote file:"$NiniteTargets" $shortcuts $autoupdate /cachepath "$NiniteCache" $userinterface "$NiniteLog"

当命令到达“Flash(IE)”部分时,命令就会中断。我认为括号存在于变量中会发生一些事情,但我不确定。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

首先:为什么只是为了运行程序而委托给cmd? PowerShell也是一个shell:

blabla.exe /select $software /silent

但问题比这更复杂一点,即使cmd的参数解析的复杂性被删除了:

PS> $software = 'Java Flash Reader "Flash (IE)"'
PS> .\echoargs.exe /select $software /silent
arg 1: /select
arg 2: Java Flash Reader Flash
arg 3: (IE)
arg 4: /silent

您可以使用\"替换值中的引号,以使其正常工作,显然:

PS> $software = $software -replace '"', '\"'
PS> .\echoargs.exe /select $software /silent
arg 1: /select
arg 2: Java Flash Reader "Flash (IE)"
arg 3: /silent

答案 1 :(得分:0)

尝试像这样声明$software

$software = $('Java Flash Reader "Flash (IE)"')

另一种选择是尝试这样声明:

$software = "Java Flash Reader `"Flash `(IE`)`""

添加后退抽搐以逃避("