PowerShellのスクリプトを書いているとき、「変数と変数をアンダーバー(_)などで繋いで、ひとつの文字列として表示したい」ということ、よくありますよね。
しかし、普通に並べて書くだけだと、PowerShellが変数の区切りを正しく理解できず、中身が空っぽで表示されてしまうことがあります。
今回は、変数を安全に並べて表示するための「波括弧({})」を使った正しい書き方をサクッと解説します!
❌ やりがちなNG例:そのまま並べて書いてしまう
例えば、変数 $a に「2026」、変数 $b に「Log」という文字が入っているとします。これを「2026_Log」と表示させたい場合、以下のように書くと失敗します。
$a = "2026"
$b = "Log"
# NGな書き方
Write-Host "$a_$b"
なぜダメなのか?
PowerShellは、$ の後ろにある文字を「ひとつの変数名」として解釈しようとします。 そのため、上記のように書くと、「$a_ という名前の変数」と「$b という変数」だと勘違いしてしまうのです。当然 $a_ という変数は定義していないので、画面には _Log(または何も出ない)という意図しない結果になってしまいます。
⭕ 正しい解決策:波括弧 {} で変数の範囲を明示する
これを防ぐには、最初の変数の「$ の直後」を波括弧 {} で囲んであげるのが正解です。
正しい書き方
$a = "2026"
$b = "Log"
# OKな書き方(ダブルクォーテーションで囲むこと)
Write-Host "${a}_$b"
出力結果
2026_Log
このように ${a} と書くことで、PowerShellに対して「変数名はここまでだよ!」と明確に伝えることができます。これなら、後ろにアンダーバーや他の文字列がくっついていても、正しく変数が評価されて表示されます。
💡 ポイント 文字列内で変数を展開(中身を表示)させるには、全体を**ダブルクォーテーション(
")**で囲む必要があります。シングルクォーテーション(')で囲むと、${a}_$bという文字がそのまま出てしまうので注意してください。
まとめ
-
変数の後ろにすぐ別の文字や変数を繋げると、変数名が誤認される原因になる。
-
境界線をはっきりさせるために
${変数名}の形で囲む。 -
Write-Host "${a}_$b"の形を覚えておくと便利!
ファイル名に日付や連番をスマートに組み込みたいときなどに必須のテクニックです。ぜひ活用してみてください!
