powershellから既存コマンドを使う際に、オプション指定にカンマを使うケースはダブルクオートが必要

powershellから既存コマンドでオプション指定にカンマを使うケースは、注意が必要です。
例えば、sqlcmdとかbcpとかは、接続先サーバー指定でポート指定する場合にカンマを使うケースが該当します。

コマンドの書式的にはこんな感じ

sqlcmd -S DBServerName,1433 –E

コマンドプロンプトで実行すると、正常に接続できます。
1

しかし、これをそのままpowershellで実行するとエラーになっちゃいます。
2

これはpowershellがオプション引数の書式で、カンマが入っていると特別な扱いをする(配列として扱う)からのようで、正しく動作させるためには、カンマが入ったオプション指定文字列をダブルクオートで括ります。

sqlcmd -S "DBServerName,1433" –E

3


bcpでポート指定して接続しようとしてもエラーになってしまって、「すわ、bcpってポート指定できないのかっ!?」と困ってしまっていたのですが、じつはそんなことはなかったという。
大恥かいた…

コメントを残す