El estado de finalización de la orden anterior se puede acceder a través de la variable $?
especial.
Tenga en cuenta que esto funciona mejor con errores sin terminación (como se obtendría de Move-Item). Los errores de terminación son el resultado de un throw
directo o una excepción que se lanza en .NET y alteran el flujo de su código. Es mejor usar una declaración trap
o try/catch
para observar ese tipo de errores.
Otra cosa que mirar hacia fuera para WRT $?
y de la consola de PowerShell exes es que asume un código de la salida de 0 significa éxito (es decir $?
se establece en $true
), y cualquier otra cosa significa el fracaso ($?
conjunto de $false
). Lamentablemente, no todos los miembros de la consola observan la convención del código de salida, p. puede haber múltiples códigos de éxito y un único código de falla (0). Para aquellos exes que no siguen las reglas del código de salida, use $LastExitCode
como se señala en los comentarios para determinar el éxito o el fracaso.
Muchas cosas buenas en esta respuesta. Gracias –
También para tratar de prevenir cualquier tipo de "gotchya!" ps solo almacena verdadero/falso para la última ejecución del comando. Esto incluye asignaciones variables y otras cosas que quizás no consideres como "comandos". – EdgeVB
También puede leer desde $ LASTEXITCODE para obtener el código de salida real devuelto por las aplicaciones de la consola. –