2019年8月27日火曜日

Powershell デバッグコマンド Set-PsDebug strict

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!!