如何从cmd.exe运行多行格式的PowerShell单行命令?
如何从cmd.exe运行多行格式的PowerShell单行命令?
这个场景我之前折腾过好几次,核心是得同时照顾cmd的续行规则和PowerShell的命令语法,你之前尝试的问题应该是把PowerShell的续行符(反引号`)和cmd的续行符搞混了。下面给你几个可行的多行写法:
方案一:用cmd续行符^拆分命令行
cmd里的续行符是^,只要在每行末尾加上它(注意^后面不能有任何空格或字符),cmd就会把后续行拼接成一个完整的命令传递给PowerShell:
powershell -NoProfile -Command ^ "Write-Output 'first line'; ^ Write-Output 'second line'"
最终cmd会把拼接后的"Write-Output 'first line'; Write-Output 'second line'"作为参数传给PowerShell,效果和你之前的单行优化版完全一样,但在cmd里是清晰的多行格式。
方案二:用PowerShell脚本块执行
如果你的命令逻辑更复杂,用PowerShell的脚本块&{...}会更清晰,同样配合cmd的续行符:
powershell -NoProfile -Command ^ &{^ Write-Output 'first line';^ Write-Output 'second line';^ }
这种写法把多行命令打包成一个脚本块,PowerShell会整体执行,可读性更好。
注意事项
- 每个需要续行的行末尾必须严格加
^,且^后面不能有任何字符(包括空格),否则cmd会把它当成普通字符,续行失败。 - 如果你的PowerShell命令里需要用到双引号,在cmd里要转义成
""或者^",避免和外层包裹的双引号冲突。
备注:内容来源于stack exchange,提问作者Gregory MOUSSAT
相关产品推荐
相关产品推荐

