
Cuando ejecuto nslookup
desde 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
$null
la variable de PowerShell. PD: no te permitirá hacerlo a la antigua usanza (es decir2>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>con
para 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.