コンテンツにスキップ

Top

PowerShell で echo (Write-Output) が改行する

PowerShell で 標準出力したいときは echo (Write-Output) を使いますが、このecho、最後に勝手に改行をつけるという余計なことをしてくれます。

例えば以下のようにすると、

$str1 = "hoge"
$str2 = "fuga"
echo $str1 $str2

期待しているのは

hoge fuga

なのですが、実際には、

hoge
fuga

となってしまいます。

なので、例えばログっぽく時間と変数を出したい場合、

$date = $((Get-Date).toString('yyyy-MM-dd HH:mm:ss.fff'))
$str = "hoge"
echo $date $str

以下のようになって

2022-12-27 13:41:49.215
hoge

困ってしまいました。

ですが対処は簡単で、echo 以下の文字列をダブルクオーテーションで囲えばいいだけ。

$date = $((Get-Date).toString('yyyy-MM-dd HH:mm:ss.fff'))
$str = "hoge"
echo "$date $str"

のようにすると、

2022-12-27 13:41:59.531 hoge

と期待した通りになりました。

以上!