web-dev-qa-db-ja.com

起動時にConEmuにPowerShellスクリプトを実行させるにはどうすればよいですか?

次のコマンドを使用して、新しいConEmuPowerShellコンソールを起動します。

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:\>
6
Mike Glenn

コマンド周辺の単一のクォータを削除します。 ConEmuは、/cmdスイッチに続く完全な文字列(コマンド)を実行しますが、例外があります。コンソールを起動する前に、すべての-new_console...-cur_console...がこの文字列から削除されます。

ConEmu64.exe /config "Shell" /dir "c:\" /cmd powershell -noexit -Command Write-Host "Hello world" -new_console:n
4
Maximus

わかりました、それは引用の問題ですが、まだいくつかの奇妙なことが起こっています:

/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:\>
0
Mike Glenn