1

我知道这一定很简单,但我不知道该怎么做。我在通过 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)”部分时中断。我认为括号在那个变量中发生了一些事情,但我不确定。任何帮助,将不胜感激。

4

2 回答 2

1

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

blabla.exe /select $software /silent

但问题比这复杂一点,即使cmd去掉了 's 参数解析的复杂性:

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
于 2012-08-01T12:00:15.540 回答
0

尝试$software这样声明:

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

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

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

添加背部抽动以逃避("

于 2012-08-01T15:29:04.867 回答