
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>con
NSLookup이 STDERR에 무엇을 쓰고 있는지 확인하려면 다음을 실행하세요.
신뢰할 수 없는 답변:
이것은정확히오류 메시지의 첫 번째 줄에서 PowerShell이 반환하는 내용은 다음과 같습니다.
nslookup : 신뢰할 수 없는 답변:
At line:1 char:1
+ nslookup -q=ns example.com
분명히 NSLookup은 응답에 권한이 없는 이름 서버의 레코드가 포함되어 있으면 오류를 반환합니다. 그러나 귀하의 경우에는 문제가 되지 않는 것 같으므로 위에서 설명한 대로 오류를 무시할 수 있습니다.