NSLookup en PowerShell siempre arroja un error RemoteException

NSLookup en PowerShell siempre arroja un error RemoteException

Cuando ejecuto nslookupdesde un script de PowerShell, siempre aparece un error (que se envía a la consola) a pesar de que la búsqueda se realiza correctamente:

PS C:\Windows\system32> $MyOutput = nslookup -q=SOA superuser.com
8.8.4.4 nslookup : Non-authoritative answer: At line:1 char:13
+ $MyOutput = nslookup -q=SOA superuser.com 8.8.4.4
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Non-authoritative answer::String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

Esto parece deberse al hecho de que la respuesta no tiene autoridad. Hacer una búsqueda en un servidor DNS autorizado no arroja un error.

En mis intentos por encontrar una solución por mi cuenta, encontré estoPues contesta. Sugiere utilizar elResolver-DNSNamedominio. Desafortunadamente, eso requiere Windows 8.1/Server 2012 R2 y algunos de los sistemas en los que se ejecutará mi script son de la era Windows 7.

¿Cómo puedo evitar que se muestre este error?

¡Puntos de bonificación por explicar por qué PowerShell cree que se ha producido un error!

Respuesta1

Ignore el error del ejecutable redirigiendo a $null

Su ejecutable está enviando salida a la secuencia STDERR. Puedes suprimirlo redirigiéndolo a la variable automática $null:

nslookup.exe example.com 2>$null

Notas:

  • Debes redirigir a $nullla variable de PowerShell. PD: no te permitirá hacerlo a la antigua usanza (es decir 2>nul).

  • Redirigiendo a$null es más rápidoque usarOut-Null


Explicación

NSLookup está enviando una parte de su salida alsecuencia STDERR. Cada vez que una aplicación de consola de Windows hace esto, PowerShell lo informa como unError de comando nativoerror.

En el símbolo del sistema, ejecute nslookup -q=SOA superuser.com 1>nul 2>conpara ver qué escribe NSLookup en STDERR:

Respuesta no autorizada:

Esto esexactamentelo que PowerShell devuelve en la primera línea de su mensaje de error:

nslookup: Respuesta no autorizada:
En la línea:1 char:1
+ nslookup -q=ns example.com

Aparentemente, NSLookup devuelve un error cuando su respuesta incluye registros de un servidor de nombres no autorizado. Sin embargo, en su caso, eso no parece ser un problema, por lo que puede ignorar el error como se describe anteriormente.

información relacionada