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