¿Por qué mi valor booleano de valor 0 es verdadero?

He estado trabajando en algunos scripts de PowerShell y encontré algo un poco extraño. Tengo un script que acepta 4 parámetros obligatorios: dos cadenas y dos booleanos.

.\[scriptname] [string1] [string2] [bool1] [bool2]

Esto funciona bien, y he comprobado que todos se han pasado correctamente.

Sin embargo, he encontrado algo bastante extraño cuando PowerShell pide parámetros; establece ambos valores booleanos en verdadero.

.\[scriptname] [string1] [string2]
please enter bool1: 0
please enter boo2: 0

A continuación, ejecuta el script como si bool1 y bool2 estuvieran configurados en true, y no en lo que yo he establecido. Tengo verdad que pasa en todo tipo de cosas diferentes, y siempre resulta en verdad.

No estoy seguro de por qué sucede esto, ¡y quería saber si alguien ha encontrado una causa o solución a este extraño problema!

También he encontrado que el Programador de tareas tiene un problema similar. Configurarlo con

powershell -file [scriptlocation] [string1] [string2] [bool1] [bool2]

ejemplo:

powershell -file "C: \ script1.ps1" "c: \ fileOne.txt" "c: \ folder1" 0 0

Ambos booleanos vienen a través de cuerdas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta