about_Booleans

PowerShell では、暗黙的に任意の型を ブール値 として扱うことができます。 他の型を ブール 値に変換するために PowerShell で使用されるルールを理解することが重要です。

スカラー型からの変換

スカラー型はアトミックな数量で、一度に1つの値しか保持できません。 次の型はに評価され $false ます。

  • ''またはのような空の文字列""
  • 次のような Null 値 $null
  • の値を持つ任意の数値型 0

例:

PS> $false -eq ''
True
PS> if ("") { $true } else { $false }
False
PS> if ($null) { $true } else { $false }
False
PS> if ([int]0) { $true } else { $false }
False
PS> if ([double]0.0) { $true } else { $false }
False

次の型はに評価され $true ます。

  • 空でない文字列
  • コレクション以外の他の型のインスタンス

例 :

# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True

これは、 明示的な文字列の解析 とは異なることに注意してください。

PS> [bool]::Parse('false')
False
PS> [bool]::Parse('True')
True
PS> [bool]::Parse('Not True')
MethodInvocationException: Exception calling "Parse" with "1" argument(s):
"String 'Not True' was not recognized as a valid Boolean."

コレクション型からの変換

配列は、PowerShell で最も一般的なコレクション型です。 これらの規則は、 IList インターフェイスを実装するコレクションに似た型に適用されます。

  • 空のコレクションは常に $false
  • コマンドからの出力が存在しないことを示す特殊な null 値 [System.Management.Automation.Internal.AutomationNull]::Value は常に $false です。
  • 単一要素のコレクションは、1つの要素と唯一の要素の ブール 値に評価されます。
  • 要素数が1個を超えるコレクションは常に $true です。

例:

# Empty collections
PS> [bool]@()
False
PS> [bool](Get-ChildItem | Where-Object Name -eq 'Non-existent-File.txt')
False
# Single-element collections
PS> $a = @(0)
PS> [bool]$a
False
PS> $b = @(1)
PS> [bool]$b
True
# Multi-element collections
PS> $c = @(0,0)
PS> [bool]$c
True

関連項目