Me parece un poco molesto la visualización de errores estándar de Powershell (texto en rojo, visualización de varias líneas). ¿Es posible personalizar esto?¿Es posible personalizar la visualización de errores en powershell?
Respuesta
Sí y sí.
Puede usar el objeto incorporado $host
si todo lo que quiere hacer es cambiar el color del texto. Sin embargo, no puede cambiar el mensaje de error en sí, eso está codificado.
Lo que podría hacer es (a) suprimir los mensajes de error, y en su lugar (b) atrapar los errores y mostrar el suyo.
Realice (a) configurando $ErrorActionPreference = "SilentlyContinue"
- esto NO PARARÁ el error, pero suprime los mensajes.
Lograr (b) requiere un poco más de trabajo. De manera predeterminada, la mayoría de los comandos de PowerShell no producen una excepción detectable. Por lo tanto, deberá aprender a ejecutar comandos y agregar el parámetro -EA "Stop" para generar una excepción interceptable si algo sale mal. Una vez que hayas hecho esto, se puede crear una trampa en el shell escribiendo:
trap {
# handle the error here
}
Se puede poner esto en su script de perfil en lugar de escribir cada vez. Dentro de la trampa, puede generar el texto de error que desee utilizando el cmdlet Write-Error.
Probablemente más trabajo de lo que querías hacer, pero eso es básicamente cómo harías lo que pedías.
Aquí hay un montón de cosas que te permitirán personalizar la salida de tu consola. Puede establecer estas configuraciones como desee en su perfil, o crear funciones/scripts para cambiarlas para diferentes propósitos. Tal vez quieras un modo "No me molestes" a veces, o un "Demuéstrame que todo va mal" a otros. Podría hacer una función/script para cambiar entre esos.
## Change colors of regular text
$Host.UI.RawUI.BackGroundColor = "DarkMagenta"
$Host.UI.RawUI.ForeGroundColor = "DarkYellow"
## Change colors of special messages (defaults shown)
$Host.PrivateData.DebugBackgroundColor = "Black"
$Host.PrivateData.DebugForegroundColor = "Yellow"
$Host.PrivateData.ErrorBackgroundColor = "Black"
$Host.PrivateData.ErrorForegroundColor = "Red"
$Host.PrivateData.ProgressBackgroundColor = "DarkCyan"
$Host.PrivateData.ProgressForegroundColor = "Yellow"
$Host.PrivateData.VerboseBackgroundColor = "Black"
$Host.PrivateData.VerboseForegroundColor = "Yellow"
$Host.PrivateData.WarningBackgroundColor = "Black"
$Host.PrivateData.WarningForegroundColor = "Yellow"
## Set the format for displaying Exceptions (default shown)
## Set this to "CategoryView" to get less verbose, more structured output
## http://blogs.msdn.com/powershell/archive/2006/06/21/641010.aspx
$ErrorView = "NormalView"
## NOTE: This section is only for PowerShell 1.0, it is not used in PowerShell 2.0 and later
## More control over display of Exceptions (defaults shown), if you want more output
$ReportErrorShowExceptionClass = 0
$ReportErrorShowInnerException = 0
$ReportErrorShowSource = 1
$ReportErrorShowStackTrace = 0
## Set display of special messages (defaults shown)
## http://blogs.msdn.com/powershell/archive/2006/07/04/Use-of-Preference-Variables-to-control-behavior-of-streams.aspx
## http://blogs.msdn.com/powershell/archive/2006/12/15/confirmpreference.aspx
$ConfirmPreference = "High"
$DebugPreference = "SilentlyContinue"
$ErrorActionPreference = "Continue"
$ProgressPreference = "Continue"
$VerbosePreference = "SilentlyContinue"
$WarningPreference = "Continue"
$WhatIfPreference = 0
También puede utilizar el -ErrorAction y parámetros -ErrorVariable de cmdlets para afectar sólo a esa llamada cmdlet. El segundo enviará errores a la variable especificada en lugar del $ Error predeterminado.
Además, se puede hacer esto de escribir una línea específica de texto de error:
$Host.UI.WriteErrorLine("This is an error")
(apoyos a Chris Sears para esta respuesta)
Esto puede o no puede ser lo que quiera, pero hay una variable de $ ErrorView preferencia que se puede establecer:
$ErrorView = "CategoryView"
Esto da un mensaje de error de una sola línea más corta, por ejemplo:
[PS]> get-item D:\blah
ObjectNotFound: (D:\blah:String) [Get-Item], ItemNotFoundException
- 1. Cómo personalizar la visualización de dired
- 2. ¿Es posible personalizar NUnit XML Output
- 3. Errores de permiso en PowerShell
- 4. ¿Es posible personalizar el aspecto y la sensación de jqgrid?
- 5. ¿Es posible atrapar errores de CORS?
- 6. ¿Es posible personalizar los caracteres invisibles en xcode4?
- 7. ¿Es posible personalizar los botones positivos y negativos en AlertDialog?
- 8. ¿Se puede personalizar la verificación de errores de Pylint?
- 9. ¿Es posible personalizar el estilo de sangría de XCode?
- 10. ¿Es posible personalizar el autoformato de Visual Studio?
- 11. HighCharts: ¿Es posible personalizar los colores de las series individuales?
- 12. Visualización de errores de campo de Grails
- 13. ¿Es posible reiniciar el espacio de ejecución en Powershell ISE?
- 14. Cómo personalizar los errores de validación de formulario en codeIgniter
- 15. ¿Es posible especificar el formato de visualización para un dijit.form.DateTextBox
- 16. ¿Cómo puedo personalizar la visualización de un modelo usando tipos de contenido en el administrador?
- 17. ¿Cómo personalizar el color de visualización del encabezado?
- 18. Tabla de visualización de PowerShell En HTML Correo electrónico
- 19. Visualización de errores esperados para usuarios en ASP.NET
- 20. ¿Es posible actualizar de manera asincrónica el aviso de PowerShell?
- 21. ¿Es posible crear Cmdlets de Windows PowerShell con F #?
- 22. PowerShell: ¿es posible determinar el tipo MIME de un archivo?
- 23. ¿Es posible tener errores de registro de raíles al sembrar
- 24. JAX-RS/Jersey ¿cómo personalizar el manejo de errores?
- 25. ¿Es posible hacer una corrección de errores rudimentaria con CRC?
- 26. ¿Powershell olvida establecer ERRORLEVEL en los errores del analizador?
- 27. ¿Es posible personalizar el esquema de color de un mapa de Google?
- 28. ¿Cómo personalizar la publicación en ASP.NET?
- 29. ¿Cómo hacer que powershell sea menos detallado en los errores?
- 30. iOS: ¿Es posible personalizar el menú "Abrir en ..." al previsualizar un documento?
Tenga en cuenta que las variables $ ReportErrorShow * en realidad no tienen ningún efecto en PowerShell 2.0. Consulte http://technet.microsoft.com/en-us/library/dd347675.aspx – Timbo
Buen punto, la PS v2.0 tiene un sistema diferente ahora. Actualizaré mi respuesta. – JasonMArcher