NSLookup no PowerShell sempre gera erro RemoteException

NSLookup no PowerShell sempre gera erro RemoteException

Quando executo nslookupum script do PowerShell, sempre recebo um erro (que é enviado para o console), apesar de a pesquisa ter sido bem-sucedida:

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

Isso parece ser causado pelo fato de a resposta não ser oficial. Fazer uma pesquisa em um servidor DNS autoritativo não retorna um erro.

Nas minhas tentativas de encontrar uma solução, descobri issoEntão responde. Ele sugere usar oResolver-DNSNamecomando. Infelizmente, isso requer o Windows 8.1/Server 2012 R2 e alguns dos sistemas em que meu script será executado são da era Windows 7.

Como posso evitar que esse erro seja exibido?

Pontos extras por explicar por que o PowerShell acha que ocorreu um erro!

Responder1

Ignore o erro do executável redirecionando para $null

Seu executável está enviando saída para o fluxo STDERR. Você pode suprimi-lo redirecionando-o para a variável $null automática:

nslookup.exe example.com 2>$null

Notas:

  • Você deve redirecionar para $nulla variável do PowerShell. PS não permitirá que você faça isso à moda antiga (ou seja 2>nul).

  • Redirecionando para$null é mais rápidodo que usarOut-Null


Explicação

NSLookup está enviando uma parte de sua saída para oFluxo STDERR. Sempre que um aplicativo de console do Windows faz isso, o PowerShell relata isso como umNativeCommandErrorerro.

No prompt de comando, execute nslookup -q=SOA superuser.com 1>nul 2>conpara ver o que o NSLookup está gravando no STDERR:

Resposta não oficial:

Isso éexatamenteo que o PowerShell retorna na primeira linha de sua mensagem de erro:

nslookup: Resposta não oficial:
Na linha:1 char:1
+ nslookup -q=ns example.com

Aparentemente, o NSLookup retorna um erro quando sua resposta inclui registros de um servidor de nomes não autoritativo. No entanto, no seu caso, isso não parece ser um problema, então você pode ignorar o erro descrito acima.

informação relacionada