PowerShell: 文字列がNull(または空)かどうかを判定する

PowerShellで文字列がNull($null)または空文字("")かどうかを判定したい場合は、 .NET Framework StringクラスのIsNullOrEmptyメソッドを使用します。 ちなみにPowerShellではNullを「$null」と記述します。 Nullは「何もない」という意味で、Emptyは空文字("" 長さが0の文字列)のことです。

IsNullOrEmptyメソッドの書式は次の通りです。

書式
[string]::IsNullOrEmpty(変数)

指定した変数がNullか空文字の場合はTrue、 それ以外はFalseが戻ります。

次のサンプルコードでは、IsNullOrEmptyメソッドを使って 通常の文字列、Null、空文字の場合の戻り値を取得しています。

$a = "abc"
$b = $null
$c = ""

[string]::IsNullOrEmpty($a) # False

[string]::IsNullOrEmpty($b) # True

[string]::IsNullOrEmpty($c) # True

Nullと空文字を区別したい場合

IsNullOrEmptyメソッドではNullまたは空文字の場合にTrueが戻ります。 そのためNullと空文字の区別はできません。 Nullと空文字を区別したい場合は自分で関数を作るか、 分岐処理を追加する必要があります。

次の自作関数Get-Null-Empty-Otherは、 引数がNull($null)の場合1、空文字("")の場合2、 それ以外の場合0が戻ります。

function Get-Null-Empty-Other($s) {
	if ($s -eq $null){
		return 1
	} elseif ($s -eq ""){
		return 2
	} else {
		return 0
	}
}

$a = "abc"
$b = $null
$c = ""

Get-Null-Empty-Other $a  # 0
Get-Null-Empty-Other $b  # 1
Get-Null-Empty-Other $c  # 2

参考サイト
String.IsNullOrEmpty(String) メソッド (System) | Microsoft Docs

PowerShell