Estás muy desviado aquí.
Ya tienes un mensaje de error grande y agradable. ¿Por qué diablos querría escribir código que verifique $?
explícitamente después de cada comando ? Esto es enormemente engorroso y propenso a errores. La solución correcta es dejar de comprobar$?
.
En su lugar, use el mecanismo integrado de PowerShell para explotar por usted. Lo habilita estableciendo la preferencia de error en el nivel más alto:
$ErrorActionPreference = 'Stop'
Pongo esto en la parte superior de cada script que escribo, y ahora no tengo que comprobarlo $?
. Esto hace que mi código sea mucho más simple y confiable.
Si se encuentra con situaciones en las que realmente necesita deshabilitar este comportamiento, puede mostrar catch
el error o pasar una configuración a una función en particular usando el archivo common -ErrorAction
. En su caso, probablemente desee que su proceso se detenga en el primer error, detecte el error y luego regístrelo.
Tenga en cuenta que esto no maneja el caso cuando los ejecutables externos fallan (código de salida distinto de cero, convencionalmente), por lo que aún debe verificar $LASTEXITCODE
si invoca alguno. A pesar de esta limitación, la configuración aún ahorra mucho código y esfuerzo.
Fiabilidad adicional
También puede considerar usar el modo estricto :
Set-StrictMode -Version Latest
Esto evita que PowerShell proceda silenciosamente cuando usa una variable inexistente y en otras situaciones extrañas. (Consulte el -Version
parámetro para obtener detalles sobre lo que restringe).
La combinación de estas dos configuraciones hace que PowerShell sea mucho más un lenguaje a prueba de fallas, lo que hace que la programación en él sea mucho más fácil.