PowerShell: 変数の宣言を強制する
PowerShellはデフォルトでは変数の宣言をする必要がありません。 宣言していなくても問題なく使用可能です。 ただし変数の宣言を強制することもできます。
例えば次のコードでは「$m」の内容を表示するつもりでしたが、 間違って「$n」と入力しています。 結果的に「Write-Host $n」では何も表示されません。
$m = "hello" Write-Host $n
スクリプトの内容が複雑になるにつれて、 このようなスペルミスの可能性もでてきます。 変数の宣言を強制しておいた方が、 バグが発生する可能性も低くなります。
宣言を強制する方法
変数の宣言を強制するには先頭に次のコードを記述します。
# 変数の宣言を強制する Set-PSDebug -Strict
先程のコードを「Set-PSDebug -Strict」を加えて実行してみます。
# 変数の宣言を強制する Set-PSDebug -Strict $m = "hello" Write-Host $n # 実行結果(エラー) 変数 '$n' は、設定されていないために取得できません。 発生場所 行:5 文字:12 + Write-Host $n + ~~ + CategoryInfo : InvalidOperation: (n:String) []、RuntimeException + FullyQualifiedErrorId : VariableIsUndefined
実行結果のエラー内容から「$n」の箇所でエラーが発生しているのがわかります。 このように変数の宣言を強制しておくことで、 スペルミスによる思わぬバグを防ぐことが可能です。
宣言の強制を解除する場合は次のように「-off」を指定します。
# 変数宣言の強制を解除 Set-PSDebug -Off
(まとめ記事: PowerShell 変数)