PowerShellはWindows環境での自動化や管理作業を効率化できる強力なツールです。中でも「変数」の使い方をマスターすることで、スクリプトの柔軟性と再利用性が大きく向上します。しかし、「$」記号がつく表現に戸惑ったり、型やスコープの概念に悩んだりする初心者の方も多いのではないでしょうか。この記事では、PowerShellの変数の基本から応用までを丁寧に解説します。これを読めば、明日から自信を持ってPowerShellの変数を使えるようになるでしょう。
PowerShellにおける変数とは?
PowerShellにおいて変数とは、値を格納するための「入れ物」です。多くのプログラミング言語と同じように、変数を使うことで再利用性や可読性が向上します。
PowerShellでは、変数名の前に必ず「$
(ドルマーク)」をつけます。例えば、次のように使います。
$greeting = "Hello, World!"
この例では、「$greeting
」という変数に文字列「Hello, World!」を代入しています。PowerShellは型を自動的に判断するため、明示的に型を書く必要はありません。
変数の基本的な使い方
変数の作成や使用はとてもシンプルです。以下に基本的な使い方を示します。
代入と出力
$name = "山田"
Write-Output $name
このコードでは、$name
に「山田」という文字列を代入し、Write-Output
でその内容を表示しています。PowerShellでは、単に変数名だけを書いても表示されます。
$name
数値の計算
数値も変数に代入可能です。
$a = 10
$b = 20
$sum = $a + $b
Write-Output $sum # 結果:30
このように、PowerShellでは演算子を使って簡単に計算ができます。
文字列との組み合わせ:変数の展開
変数を文字列と一緒に使う方法を「変数の展開」といいます。特にダブルクォート(”)の中では自動的に変数が展開されます。
$name = "田中"
Write-Output "こんにちは、$name さん"
このコードは「こんにちは、田中 さん」と出力します。
一方で、シングルクォート(’)で囲んだ文字列では変数は展開されません。
Write-Output 'こんにちは、$name さん' # 出力:こんにちは、$name さん
よく使う特殊変数
PowerShellには、あらかじめ定義されている便利な「特殊変数」があります。
$null
値が「存在しない」ことを表す変数です。
$a = $null
if ($a -eq $null) {
Write-Output "変数aはnullです"
}
$_
パイプライン内で現在処理中のオブジェクトを指します。ForEach-Object
などで使われます。
1..5 | ForEach-Object { Write-Output "番号:$_" }
$?
直前のコマンドの成功・失敗を判定する変数です。成功したらTrue
、失敗したらFalse
が格納されます。
Get-Item "C:\not_exist.txt"
Write-Output $?
変数のスコープとは?
変数には「スコープ(有効範囲)」があります。これを理解していないと、変数が意図通りに使えないことがあります。
グローバルスコープ
スクリプト全体やセッションを通じて有効な変数です。
$global:message = "これはグローバル変数です"
ローカルスコープ
関数の中など、その範囲だけで使える変数です。
function Test {
$localVar = "ローカル変数"
Write-Output $localVar
}
スクリプトスコープ
スクリプトファイル内でのみ有効な変数です。別スクリプトからはアクセスできません。
$script:filename = "log.txt"
配列・ハッシュテーブルと変数
変数には配列やハッシュテーブルを格納することもできます。
配列の例
$fruits = @("りんご", "みかん", "バナナ")
Write-Output $fruits[1] # 出力:みかん
ハッシュテーブルの例
$person = @{
Name = "佐藤"
Age = 30
}
Write-Output $person["Name"] # 出力:佐藤
これにより、複数の値を1つの変数で管理でき、より効率的なスクリプトが書けます。
環境変数を扱う
PowerShellから環境変数にアクセスする方法もあります。
$env:PATH
$env:USERNAME
また、自分で設定することも可能です。
$env:MY_VAR = "HelloEnv"
Write-Output $env:MY_VAR
変数の削除方法
不要になった変数はRemove-Variable
コマンドで削除できます。
Remove-Variable -Name greeting
または、nullを代入することでも実質的に「空」にできます。
$greeting = $null
型指定をした変数の定義
通常はPowerShellが自動で型を推測しますが、自分で型を指定することも可能です。
[string]$name = "高橋"
[int]$age = 25
これにより、型の誤りを防ぎ、意図したとおりにデータを扱うことができます。
まとめ
PowerShellの変数は、簡単に使える一方で奥深い機能も持っています。スコープや特殊変数、型の指定、配列・ハッシュテーブルなどを使いこなすことで、より柔軟でメンテナンス性の高いスクリプトを書くことができます。初めは戸惑うかもしれませんが、基本をしっかり押さえることで、すぐに応用力が身につくでしょう。
日々の業務の効率化や自動化に、ぜひPowerShellの変数を活用してみてください。