PowerShell의 NSLookup은 항상 RemoteException 오류를 발생시킵니다.

PowerShell의 NSLookup은 항상 RemoteException 오류를 발생시킵니다.

PowerShell 스크립트에서 실행하면 nslookup조회가 성공했음에도 불구하고 항상 오류가 발생합니다(콘솔에 출력됨).

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

이는 답변이 신뢰할 수 없기 때문에 발생하는 것 같습니다. 권한 있는 DNS 서버를 조회해도 오류가 반환되지 않습니다.

스스로 해결책을 찾으려고 노력하던 중, 나는 이것을 발견했습니다.그래서 대답. 을 사용하는 것이 좋습니다해결-DNSName명령. 불행히도 Windows 8.1/Server 2012 R2가 필요하며 내 스크립트가 실행될 시스템 중 일부는 Windows 7 시대입니다.

이 오류가 표시되지 않도록 하려면 어떻게 해야 합니까?

PowerShell에서 오류가 발생했다고 생각하는 이유를 설명하는 보너스 포인트!

답변1

$null로 리디렉션하여 실행 파일의 오류를 무시합니다.

실행 파일이 STDERR 스트림으로 출력을 보내고 있습니다. 자동 $null 변수로 리디렉션하여 이를 억제할 수 있습니다.

nslookup.exe example.com 2>$null

노트:

  • PowerShell의 $null변수로 리디렉션해야 합니다. PS에서는 기존 방식(예 2>nul: )을 수행하도록 허용하지 않습니다.

  • 다음으로 리디렉션 중$null 가 더 빠르다사용하는 것보다Out-Null


설명

NSLookup은 출력의 일부를STDERR 스트림. Windows 콘솔 애플리케이션이 이 작업을 수행할 때마다 PowerShell은 이를 다음과 같이 보고합니다.기본명령오류오류.

명령 프롬프트에서 nslookup -q=SOA superuser.com 1>nul 2>conNSLookup이 STDERR에 무엇을 쓰고 있는지 확인하려면 다음을 실행하세요.

신뢰할 수 없는 답변:

이것은정확히오류 메시지의 첫 번째 줄에서 PowerShell이 ​​반환하는 내용은 다음과 같습니다.

nslookup : 신뢰할 수 없는 답변:
At line:1 char:1
+ nslookup -q=ns example.com

분명히 NSLookup은 응답에 권한이 없는 이름 서버의 레코드가 포함되어 있으면 오류를 반환합니다. 그러나 귀하의 경우에는 문제가 되지 않는 것 같으므로 위에서 설명한 대로 오류를 무시할 수 있습니다.

관련 정보