今回は、変数と環境変数の使い方を覚えよう。PowerShellでは変数の型は入力した値で決まるので、宣言する必要がない。WindowsなどのOSの環境変数を、通常の変数と同じように操作できるのも特徴だ。

「$」で始まる文字列が変数になる

 PowerShellでは、変数の頭に「$」を付ける。「$a」でも「$result」でも、先頭に$を付ければ変数として扱われる。変数にはどのような値でも格納できる。$aに数値の「1」を、$bに文字列の「1」を格納するなら

$a = 1
$b = "1"

となる。同じ「1」でも、ダブルクォーテーションで囲むと文字列として扱う。

 変数は、特に宣言をしなければ入力した値で自動的に型が決まる。上の例では、$aは「Int32」型に、$bは「String」型に設定される。変数の型は「Get-Member」で確認できる(図1)。

[画像のクリックで拡大表示]
図1●変数の型を確認する
「Get-Member」コマンドを変数(ここでは「$a」)に使うと、その変数の型を示す「TypeName」が最初に表示される。その後にメソッドやプロパティなどが表示される。
$a | Get-Member

 型宣言が不要なのは便利だが、演算の際には要注意だ。例えば「+」。PowerShellの+という演算子は、数値にも文字列にも適用できる。先ほどの$aと$bを使って

$c = $a + $b
$c = $b + $a

はどちらも正しく実行できる。しかし答えは違う(図2)。異なる型の変数を加えた場合、先頭の変数型が有効になるためだ。ここはPowerShell初心者が混乱しやすい点だ。

[画像のクリックで拡大表示]
図2●最初の変数の型によって演算の種類が決まる
PowerShellで「+」という演算は、数値なら加算、文字列なら連結を意味する。どちらになるかは、式の最初に置かれた変数の型で決まる。このためPowerShellでは、式中の変数の数や種類が同じでも、置かれた順番によって結果が変わる場合がある。