powershellから既存コマンドでオプション指定にカンマを使うケースは、注意が必要です。
例えば、sqlcmdとかbcpとかは、接続先サーバー指定でポート指定する場合にカンマを使うケースが該当します。
コマンドの書式的にはこんな感じ
sqlcmd -S DBServerName,1433 –E
しかし、これをそのままpowershellで実行するとエラーになっちゃいます。
これはpowershellがオプション引数の書式で、カンマが入っていると特別な扱いをする(配列として扱う)からのようで、正しく動作させるためには、カンマが入ったオプション指定文字列をダブルクオートで括ります。
sqlcmd -S "DBServerName,1433" –E
bcpでポート指定して接続しようとしてもエラーになってしまって、「すわ、bcpってポート指定できないのかっ!?」と困ってしまっていたのですが、じつはそんなことはなかったという。
大恥かいた…