PowerShell の Null 変数

Marion Paul Kenneth Mendoza 2023年9月18日
  1. PowerShell の Null 変数の概要
  2. PowerShell の Null 変数の影響
  3. PowerShell での Null 値の確認
PowerShell の Null 変数

PowerShell は $Null オブジェクトを値 null で処理し、一部のコマンドは生成するためにいくつかの出力を必要とします。エラーが発生した場合は null に値を生成します。また、スクリプトのトラブルシューティングの目的で、コマンドが値を生成するかどうかを確認するのにも役立ちます。

この記事では、null 変数、PowerShell のさまざまな構文で null 変数を使用した場合の影響、および null 値を確認する方法について説明します。

PowerShell の Null 変数の概要

NULL は、不明な値または空の値と考えることができます。たとえば、値またはオブジェクトを割り当てるまで、変数は NULL です。

一部のコマンドは値を必要とし、値が NULL の場合はエラーを生成するため、この変数は重要になる可能性があります。

$null 変数は、NULL を表すために使用される PowerShell の自動変数です。これを変数に割り当て、比較に使用し、コレクション内の NULL のプレースホルダーとして使用できます。

PowerShell は、$null を NULL 値を持つオブジェクトとして扱います。したがって、この変数は、別の言語から来た場合に期待できるものとは異なります。

PowerShell の Null 変数の影響

$null 値は、それらが表示される場所に応じて、コードに異なる影響を与えます。

文字列への影響

文字列で $null を使用すると、空白の値(または空の文字列)になります。

$value = $null
Write-Output "The value is $value."

出力:

The value is .

この変数は、ログメッセージで変数を使用するときに変数を角かっこで囲む必要がある理由の 1つです。値が文字列の最後にある場合は、変数値のエッジを識別することがさらに重要です。

$value = $null
Write-Output "The value is [$value]"

出力:

The value is []

この変数により、空の文字列と $null 値を簡単に見つけることができます。

数式への影響

数値方程式で $null 変数が使用されている場合、エラーが発生しない限り、結果は無効になります。 $null 変数が 0 と評価される場合もあれば、結果全体が $null になる場合もあります。

これは、値の順序に応じて 0 または $null を与える乗算を含む例です。

$null * 5
$null -eq ( $null * 5 )

出力:

True

コレクションへの影響

コレクションを使用すると、インデックスを使用して値にアクセスできます。null コレクションにインデックスを付けようとすると、次のエラーが発生します:null 配列にインデックスを付けることができません

$value = $null
$value[10]

出力:

Cannot index into a null array.
At line:2 char:1
+ $value[10]
+ ~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

コレクションがありますが、コレクションにない要素にアクセスしようとすると、$null の結果が得られます。

$array = @( 'one', 'two', 'three' )
$null -eq $array[100]

出力:

True

オブジェクトへの影響

プロパティが指定されていないオブジェクトのプロパティまたはサブプロパティにアクセスしようとすると、未定義の変数の場合と同じように、$null 変数を取得できます。この場合、値が $null であるか実際のオブジェクトであるかは関係ありません。

$null -eq $undefined.not.existing

出力:

True

メソッドへの影響

$null 変数でメソッドを呼び出すと、RuntimeException 例外がスローされます。

$value = $null
$value.toString()

出力:

You cannot call a method on a null valued expression.
At line:2 char:1
+ $value.toString()
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

null 値の式でメソッドを呼び出すことはできませんというフレーズが表示された場合は常に、最初に $null 値をチェックせずに、変数でメソッドを呼び出す場所を探すことができます。

PowerShell での Null 値の確認

例で $null 値をチェックするときは、常に $null 変数を左側に配置します。

このスタイルの記述は意図的なものであり、PowerShell のベストプラクティスとして受け入れられています。ただし、右側に配置しても期待どおりの結果が得られないシナリオがいくつかあります。

次の例を見て、結果がどうなるかを予測してみましょう。

if ( $value -eq $null ){
    'The array is $null'
}

if ( $value -ne $null ){
    'The array is not $null'
}

$value を定義しない場合、最初のメッセージは $true を評価し、メッセージは配列は$null になります。ここでの注意点は、両方の結果が $false になることを可能にする $value を作成することが可能であるということです。

出力:

$value = @( $null )

この場合、$value 変数は $null を含む配列です。

-eq 演算子は配列内のすべての値をチェックし、一致する $null を返します(これは $false と評価されます)。 -ne 演算子は、$null 値と一致しないものをすべて返します。この場合、結果はありません(これも $false と評価されます)。

したがって、どちらかが $true になるはずですが、どちらも $true にはなりません。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

関連記事 - PowerShell Variable