En un símbolo del sistema, pruebe esto:¿Powershell olvida establecer ERRORLEVEL en los errores del analizador?
PowerShell aaa
eco ErrorLevel es% errorlevel%
PowerShell fallar (con un error). También verá "ErrorLevel is 1". Esto se debe a que ejecuta aaa como una secuencia de comandos, lo que genera un error no controlado, que establece el nivel de error.
Sin embargo, ahora intente esto:
PowerShell '
eco ErrorLevel es% errorlevel%
PowerShell fallar (con un error). Esta vez, también verá "ErrorLevel es 0".
Me doy cuenta de que es un problema diferente. Powershell incluso dirá que es un ParserError, y es porque eché a perder los argumentos de la línea de comandos. Aún así, eso no es bueno.
No tengo claro por qué se comporta de esta manera. Supongo que esto fue un descuido. Otros programas por ahí olvidan configurar errorlevel en fallas, pero en este caso es como si hubieran llegado a la mitad. Incluso es estableciéndolo en 0 aquí en lugar de no configurarlo en absoluto.
Una pequeña corrección: no hay forma de que una aplicación de consola no establezca el nivel de error. Esto solo es posible para comandos internos. –
Windows Script Host (cscript) tiene un problema similar. Es de suponer que MS vea Powershell y WSH como alternativas en lugar de clientes del shell de comandos. –
Una solución alternativa es que su secuencia de comandos Powershell/WSH devuelva un valor específico distinto de cero en caso de éxito; -1 podría ser una buena elección. –