我知道这一定很简单,但我无法弄明白该怎么做。我在通过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)”部分时,命令就会中断。我认为括号存在于变量中会发生一些事情,但我不确定。任何帮助将不胜感激。
答案 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`)`""
添加后退抽搐以逃避(
和"