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)
}
}