Saltar al contenido

Powershell: ¿Cómo puedo evitar que se muestren errores en un script?

Solución:

Tienes unas cuantas opciones. La más sencilla implica el uso de ErrorAction ajustes.

-Erroraction es un parámetro universal para todos los cmdlets. Si hay comandos especiales que desea ignorar, puede usar -erroraction 'silentlycontinue' que básicamente ignorará todos los mensajes de error generados por ese comando. También puede utilizar el Ignore valor (en PowerShell 3+):

A diferencia de SilentlyContinue, Ignore no agrega el mensaje de error a la variable automática $ Error.

Si desea ignorar todos los errores en un script, puede usar la variable del sistema $ErrorActionPreference y haz lo mismo: $ErrorActionPreference="silentlycontinue"

Consulte about_CommonParameters para obtener más información sobre -ErrorAction. Consulte about_preference_variables para obtener más información sobre $ ErrorActionPreference.

Windows PowerShell proporciona dos mecanismos para informar errores: un mecanismo para terminando errores y otro mecanismo para errores no terminantes.

El código CmdLets interno puede llamar a ThrowTerminatingError cuando se produce un error que no permite o no debe permitir que el cmdlet continúe procesando sus objetos de entrada. El autor de la secuencia de comandos puede utilizar una excepción para detectar estos errores.

EX :

try
{
  Your database code
}
catch
{
  Error reporting/logging
}

El código CmdLets interno puede llamar a WriteError método para informar errores no finales cuando el cmdlet puede continuar procesando los objetos de entrada. El guionista puede usar la opción -ErrorAction para ocultar los mensajes, o usar la $ErrorActionPreference para configurar todo el comportamiento del script.

Tuve un problema similar al intentar resolver nombres de host usando [system.net.dns]. Si la IP no se resolvió, .Net arrojó un error de terminación. Para evitar el error de terminación y aún retener el control de la salida, creé una función usando TRAP.

P.EJ

Function Get-IP 
{PARAM   ([string]$HostName="")
PROCESS {TRAP 
             {"" ;continue} 
             [system.net.dns]::gethostaddresses($HostName)
        }
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *