PowerShellで、未定義の変数を参照してもエラーにはならない。
ただし、これが原因のBUGは良く発生する。
Set-PsDebugで、「strictモード」をONにすると、エラーを発見できる。
$Hello_VALには、値を代入して、$Helloは、何もしない。
下の例では、5行目は、エラーとならずスルーされ、12行目は、エラーとなる。
Source
1 $Hello_VAL = "HELLO!!"
2
3 Set-PsDebug -Off
4 Write-Host "非strict モード"
5 $Hello
6 $Hello_VAL
7
8 Write-host "-------------------"
9
10 Write-Host "strict モード"
11 Set-PSDebug -Strict
12 $Hello
13 $Hello_VAL
14
実行結果
非strict モード
HELLO!!
-------------------
strict モード
変数 '$Hello' は、設定されていないために取得できません。
発生場所 XXXXXXXXXX.ps1:12 文字:1
+ $Hello
+ ~~~~~~
+ CategoryInfo : InvalidOperation: (Hello:String)
[]、RuntimeException
+ FullyQualifiedErrorId : VariableIsUndefined
HELLO!!