PowerShell启动cmd运行带参数IISExpress的引号转义问题
解决PowerShell启动cmd运行IISExpress的转义问题
问题根源
你的命令出错是因为PowerShell向cmd传递参数时,双引号的转义逻辑没处理对,cmd无法正确识别带空格的程序路径,把C:/Program当成了单独命令。
解决方案
方法1:使用PowerShell停止解析符--%(最简单)
--%会让PowerShell直接将后续参数原封不动传给cmd,无需额外转义双引号:
Start-Process cmd -ArgumentList '--% /k "C:\Program Files\IIS Express\iisexpress.exe" /config:"d:\Repo\app\applicationhost.config" /apppool:"Clr4IntegratedAppPool"'
方法2:手动转义双引号
如果不想用--%,可以在PowerShell中对要传给cmd的双引号进行转义:
- 在双引号包裹的参数列表里,用两个双引号
""表示一个cmd能识别的双引号:
Start-Process 'cmd' -ArgumentList '/k ""C:\Program Files\IIS Express\iisexpress.exe"" /config:""d:\Repo\app\applicationhost.config"" /apppool:""Clr4IntegratedAppPool""'
- 或者用PowerShell的转义符
`(反引号)配合反斜杠,确保cmd收到正确的双引号:
Start-Process cmd -ArgumentList "/k \`"C:\Program Files\IIS Express\iisexpress.exe\`" /config:\`"d:\Repo\app\applicationhost.config\`" /apppool:\`"Clr4IntegratedAppPool\`""
补充说明
建议将路径中的斜杠从/改为\,cmd对反斜杠的兼容性更好。
内容的提问来源于stack exchange,提问作者Irdis
相关产品推荐
相关产品推荐

