Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Breve descrizione
Descrive come vengono valutate le espressioni booleane.
Descrizione lunga
PowerShell può considerare in modo implicito qualsiasi tipo come booleano. È importante comprendere le regole usate da PowerShell per convertire altri tipi in valori booleani.
Conversione da tipi scalari
Un tipo scalare è una quantità atomica che può contenere un solo valore alla volta. I tipi seguenti restituiscono $false:
- Stringhe vuote, ad esempio
''o"" - Valori Null come
$null - Qualsiasi tipo numerico con il valore di
0
Esempi:
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
I tipi seguenti restituiscono $true:
- Stringhe non vuote
- Istanze di qualsiasi altro tipo non di raccolta
Esempi:
# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True
Si noti che questo comportamento è diverso da 'analisi esplicita delle stringhe:
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."
Conversione da tipi di raccolta
Le matrici sono il tipo di raccolta più comune in PowerShell. Queste regole si applicano a tutti i tipi simili a una raccolta che implementano l'interfaccia IList.
- Le raccolte vuote sono sempre
$false - Il valore Null speciale che indica l'assenza di output da un comando,
[System.Management.Automation.Internal.AutomationNull]::Valueè sempre$false. - Le raccolte a singolo elemento restituiscono il valore booleano valore booleano del relativo unico elemento e uno.
- Le raccolte con più di 1 elemento sono sempre
$true.
Esempi:
# 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