ホームに戻る
出典 :
PowerShellスクリプティングの第一歩(前編) - @IT PowerShellスクリプティングの第一歩(後編) - @IT そうだったのか!配列の超簡単入門/PowerShellで配列デビュー 第1回 | 【チェシャわら】 【連想配列 (ハッシュ) 】って何者?使い方は?/PowerShellで配列デビュー 第2回 | 【チェシャわら】
関連 :
[.NET]Dictionary(連想配列) [C++]マップ(連想配列)
目次 :

基本形

# 変数の初期化 $AnyParam_1 = 123 $AnyParam_2 = "abc" # 変数の参照 Write-Host $AnyParam_1 Write-Host $AnyParam_2
実行結果
123 abc

変数の命名規則

変数の型

PowerShellは他のスクリプト言語同様、静的な型付けを行わず、与えられた実データに応じて適切なデータ型を自動的に割り当てる。
ここで既存の変数に異なる型のデータを代入した場合、新たな値に応じてデータ型が再度割り当てられる(エラーとはならない)。
# $ttt に 1 (数値)を代入し、型を確認 # ⇒ Int32 (ValueType : 値型) PS > $ttt = 1 PS > $ttt.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Int32 System.ValueType # $ttt に "abc" (文字列)を代入し、型を確認 # ⇒ String (Object : オブジェクト型) PS > $ttt = "abc" PS > $ttt.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String System.Object

文字列変数の自動展開

文字列を表現する際は引用符(シングルクォート ('') 、またはダブルクォート ("") )で囲む必要があるが、
文字列中に変数を含む場合、いずれを用いたかで挙動が異なる。
# 変数 $name に文字列を代入 $name = "山田" # ダブルクォートで囲んだ場合 : $name が展開される Write-Host "私は $name です" # シングルクォートで囲んだ場合 : $name が展開されない Write-Host '私は $name です'
実行結果
私は 山田 です 私は $name です

配列

初期化

配列は @(要素1, 要素2,...) の形式で指定する。
# 変数 $arr を配列として初期化 $arr = @(1, 2, 3, 4) # ↑ ↑ ↑ ↑ # │ │ │ $arr[3] または $arr[-1] # │ │ $arr[2] # │ $arr[1] # $arr[0]

参照

変数名[添字] の形式で指定する。
添字(インデクス)は 0 起算のため、$arr の先頭要素は $arr[0] 、続く要素は $arr[1] 、 $arr[2] ...となる。
また、添字に -1 を指定することで末尾要素にアクセスできる。
添字を省略した場合、すべての要素を参照する。
PS > $arr = @(1, 2, 3, 4) PS > $arr[0] #< 先頭要素にアクセス 1 PS > $arr[1] 2 PS > $arr[-1] #< 末尾要素にアクセス 4 PS > $arr #< 全要素にアクセス 1 2 3 4 PS >

連想配列(ハッシュテーブル)

連想配列とは、値と、値を連想させる「キー」の対を保持する配列のこと。
無機質な「添字」と異なり、意味のある「キー」を用いることで、値を体系立てて整理することができる。
.NET、およびC++における同種の概念については、
[.NET]Dictionary(連想配列) [C++]マップ(連想配列) を参照のこと。

初期化

連想配列は @{要素1のキー=要素1の値; 要素2のキー=要素2の値;...} の形式で指定する。
# 変数 $map_height を連想配列として初期化 # 氏名と身長を対にして保持する $map_height = @{"相原" = 168; "新井" = 170; "早矢仕" = 180}

参照

変数名[キー] または 変数名.キー の形式で指定する。
キーを省略した場合は通常の配列同様、すべての要素を参照する。
PS > $map_height = @{"相原" = 168; "新井" = 170; "早矢仕" = 180} PS > $map_height["相原"] #< "相原" の身長 168 PS > $map_height."新井" #< "新井" の身長 170 PS > $map_height.早矢仕 #< . (ドット)を用いる場合、引用符は省略可能 180 PS > $map_height #< 全要素にアクセス Name Value ---- ----- 相原 168 新井 170 早矢仕 180 PS > $map_height.Keys #< Keys プロパティでキーの一覧を取得 相原 新井 早矢仕 PS > $map_height.Values #< Values プロパティで値の一覧を取得 168 170 180 PS >