Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

実践編:変数・データ型・コレクション

PowerShell における変数の宣言とスコープ、基本的なデータ型と型変換、配列およびハッシュテーブル(連想配列)の操作方法を解説します。

変数の定義とスコープ

PowerShell の変数名は先頭にドル記号($)を付与して定義します。代入演算子(=)を用いて値を格納します。

$serverName = "web01.internal"
$maxRetries = 3
$isEnabled = $true

» 変数スコープ

変数にはアクセス可能な有効範囲(スコープ)が存在します。スコープ修飾子を明示することで有効範囲を指定できます。

  • $local:: 現在のブロックまたは関数内でのみ有効(指定なしのデフォルト)
  • $script:: 実行中のスクリプトファイル全体で有効
  • $global:: セッション全体で有効
  • $env:: オペレーティングシステムの環境変数を参照・更新
# 環境変数へのアクセス
Write-Output "User profile path: $env:USERPROFILE"

# 一時的な環境変数の設定
$env:NODE_ENV = "production"

基本データ型と型キャスト

PowerShell は .NET の豊富な型システムを直接利用します。通常は自動で型が判別されますが、明示的に型を指定(型キャスト)することも可能です。

型名説明例
[string]文字列"PowerShell"
[int]32ビット符号付き整数42
[double]倍精度浮動小数点数3.14159
[bool]真偽値($true / $false)$true
[datetime]日付・時刻オブジェクト[datetime]"2026-09-27"

» 型キャストの例

角括弧 [] を変数の前につけることで、文字列を数値や日付型に変換できます。

# 文字列を数値に変換
$num = [int]"128"

# 文字列を日付オブジェクトに変換
$date = [datetime]"2026-09-27 10:00:00"
Write-Output "Year: $($date.Year), Day of Week: $($date.DayOfWeek)"

配列(Array)の作成と操作

複数の値をまとめて管理する配列の基本的な使い方を説明します。

» 配列の作成

要素をカンマで区切るか、配列部分式 @(...) を使用して作成します。

# カンマ区切りによる配列
$fruits = "Apple", "Banana", "Cherry"

# 空の配列
$emptyArray = @()

# 連続した数値の範囲演算子
$numbers = 1..10

» インデックス参照

要素へのアクセスには角括弧インデックスを使用します。0から始まり、-1 は末尾の要素を表します。

Write-Output $fruits[0]   # Apple
Write-Output $fruits[-1]  # Cherry

» 要素の追加と List 型

+= 演算子で配列に要素を追加できますが、内部的には配列全体を新しく作り直すため、要素数が多い場合は処理速度が低下します。大量のデータを扱う場合は List[T] を利用します。

# 大量データを効率よく扱うジェネリックリスト
$list = [System.Collections.Generic.List[string]]::new()
$list.Add("Alpha")
$list.Add("Beta")
$list.Add("Gamma")

ハッシュテーブルとカスタムオブジェクト

キーと値のペアで管理するハッシュテーブル(連想配列)と、独自のプロパティを持つオブジェクトの作成方法です。

» ハッシュテーブル(Hashtable)

@{} 構文で定義し、キーと値をイコール記号で結びます。

$config = @{
    HostName = "192.168.1.10"
    Port     = 8080
    Protocol = "HTTPS"
}

# 値の参照と追加
Write-Output $config["HostName"]
$config["Timeout"] = 30

» カスタムオブジェクト(PSCustomObject)

ハッシュテーブルの先頭に [PSCustomObject] を付与すると、プロパティを持った構造化オブジェクトを作成できます。

$record = [PSCustomObject]@{
    Id     = 101
    Name   = "Web-Server-01"
    Active = $true
}

# プロパティとしてアクセス
Write-Output "$($record.Name) is active: $($record.Active)"

# パイプラインコマンド(Export-Csv 等)にそのまま流すことが可能
$record | Select-Object -Property Id, Name