我使用以下命令启动新的 ConEmu powershell 控制台。
ConEmu64.exe /config "shell" /dir "c:\" /cmd powershell -new_console:n
我想传递一个附加参数来指定在启动新控制台时运行的 powershell 脚本。下面的代码几乎可以工作,但只打印整个命令,并没有真正执行它:
ConEmu64.exe /config "shell" /dir "c:\" /cmd 'powershell -noexit -Command {Write-host "Hello world"}' -new_console:n
生成结果:
Write-host Hello world
C:\>
我期待着:
Hello world
C:\>
答案1
删除命令周围的单引号。ConEmu 执行跟在/cmd
switch 后面的完整字符串(命令),只有例外 - 在启动控制台之前,所有-new_console...
和-cur_console...
都从该字符串中删除。
ConEmu64.exe /config "shell" /dir "c:\" /cmd powershell -noexit -Command Write-host "Hello world" -new_console:n
答案2
好的,我明白了,这是一个引用问题,但仍然有一些奇怪的事情:
/config "shell" /dir "c:\" /cmd 'powershell -noexit -Command "& Write-host `"Hello world""' -new_console:n
这有效并产生了预期的结果:
Hello World
C:\>
但如果你仔细观察,“Hello World”末尾的引号没有被转义,而第一个引号被转义了。如果我使用看似正确的语法:
/config "shell" /dir "c:\" /cmd 'powershell -noexit -Command "& Write-host `"Hello world`""' -new_console:n
我明白了
Hello world`
C:\>