変数の基本概念
PowerShellにおいて、変数はデータを一時的に保持するためのメモリ上の領域である。スクリプト実行中の計算結果や文字列などの状態を記憶し、必要な場所で再利用するために不可欠な要素となる。変数を利用することで、ハードコーディングを避け、柔軟で保守性の高いコードを記述できる。
変数は、データに名前を付けて保存するラベル付きのコンテナと考えると分かりやすい。
# 変数の定義(データの格納)
$targetServer = "AP-SRV01"
# 変数の参照(データの取り出し)
$targetServer
変数を利用するメリット
変数を使用しない場合、同じ計算や処理を複数箇所に記述する必要があり、修正時の漏れが発生しやすくなる。変数に結果を保持しておくことで、コードの重複を排除し、変更にも強くなる。
# 変数なし:毎回同じ計算を記述し、値の変更時に複数箇所の修正が必要
"単価500の8個分:" + (500 * 8)
"その消費税10%:" + (500 * 8 * 0.1)
# 変数あり:計算結果を変数に保持し、再利用する
$subtotal = 500 * 8
"単価500の8個分:" + $subtotal
"その消費税10%:" + ($subtotal * 0.1)
変数の基本的な操作
PowerShellの変数は、$記号から始まる識別子で表される。宣言をせずに代入するだけで自動的に作成され、型も動的に推論される。
# 代入による作成
$connectionCount = 120
$isAlive = $true
# 参照と文字列の結合
$statusMessage = "現在の接続数: " + $connectionCount
# 値の更新(再代入)
$connectionCount = 150
"更新後の接続数: " + $connectionCount
変数の命名規則
変数名にはいくつかの制約が存在する。$で開始し、英数字とアンダースコアを使用できるが、数字で始めることや、スペース・ハイフンを含めることはできない。また、PowerShellの変数名は大文字と小文字を区別しない。
# 有効な変数名
$serverName = "DB-01"
$process_count = 24
$_isActive = $false
# 無効な変数名
$1stUser = "admin" # 先頭に数字は不可
$user name = "admin" # スペースは不可
$db-name = "master" # ハイフンは不可
可読性を高めるため、変数の目的が明確に伝わる名前を付けることが推奨される。キャメルケース(camelCase)やパスカルケース(PascalCase)などの命名規則をプロジェクト内で統一して使用することが重要である。
実践的な活用例
変数は、システム管理タスクの自動化やレポート生成など、様々な場面で役立つ。
システム情報のレポート生成
$hostname = "WEBSRV01"
$osVersion = "Windows Server 2022"
$diskFreeGB = 150.5
"サーバー情報レポート"
"ホスト名: " + $hostname
"OSバージョン: " + $osVersion
"空きディスク容量: " + $diskFreeGB + " GB"
リソースの集計計算
$vCPU = 4
$ramGB = 16
$instanceCount = 3
$totalVCPUs = $vCPU * $instanceCount
$totalRAM = $ramGB * $instanceCount
"リソース集計結果:"
"総vCPU数: " + $totalVCPUs
"総RAM容量: " + $totalRAM + " GB"
ベストプラクティス
変数を利用する際は、初期化(代入)を行ってから参照することを徹底する。未定義の変数を参照するとエラーや予期せぬ挙動の原因となる。また、$aや$bのような省略された名前は避け、$retryCountや$serviceStatusのように意味を持たせた名前を使用することで、コードの自己文書化が進む。
# 推奨される記述
$retryCount = 3
$maxTimeout = 30
# 避けるべき記述
$r = 3
$mt = 30