Literales booleanos en PowerShell

151

¿Cuáles son los literales booleanos en PowerShell?

Coronel Panic
fuente
23
Esta es una buena pregunta y recibió un voto positivo de mi parte. Siempre voté SO preguntas que aparecen en mis búsquedas de Google y me ayudan. Esos 4 downvoters realmente deberían repensar su actitud hacia preguntas fáciles de nivel de entrada como esta.
ulidtko

Respuestas:

172

$truey $false.

Sin embargo, esas son constantes. No hay literales a nivel de idioma para booleanos.

Dependiendo de dónde los necesite, también puede usar cualquier cosa que coaccione a un valor booleano, si el tipo tiene que ser booleano, por ejemplo, en llamadas a métodos que requieren booleano (y no tienen sobrecarga conflictiva) o declaraciones condicionales. La mayoría de los objetos no nulos son verdaderos, por ejemplo. null, cadenas vacías, matrices vacías y el número 0son falsos.

Joey
fuente
18

[bool]1Y [bool]0también funciona.

Coronel Panic
fuente
3
Para ser precisos, puede usar muchas cosas que pueden ser coaccionadas a booleanas en contextos donde se está llevando a cabo la conversión, por ejemplo, en una declaración condicional. Y en esos casos no necesitas lanzar nada. if ($s.Length) { ... }está perfectamente bien, por ejemplo.
Joey
5

Para agregar más información a las respuestas ya existentes : Los literales booleanos $truey $falsetambién funcionan como están cuando se usan como parámetros de línea de comandos para los scripts de PowerShell (PS). Para el siguiente script PS que se almacena en un archivo llamado installmyapp.ps1:

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."

Ahora, si tengo que invocar este archivo PS desde una línea de comando PS, así es como puedo hacerlo:

installmyapp.ps1 -cleanuprequired $true

O

installmyapp.ps1 -cleanuprequired 1

Aquí 1y $trueson equivalentes. Además, 0y $falseson equivalentes.

Nota : Nunca espere que el literal de cadena truepueda convertirse automáticamente a booleano. Por ejemplo, si ejecuto el siguiente comando:

installmyapp.ps1 -cleanuprequired true

no puede ejecutar el script con el siguiente error:

No se puede procesar la transformación de argumentos en el parámetro 'cleanuprequired'. No se puede convertir el valor "System.String" para escribir "System.Boolean". Los parámetros booleanos aceptan solo valores y números booleanos, como $ True, $ False, 1 o 0.

RBT
fuente