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 サーバーに対して検索を実行しても、エラーは返されません。

自分で解決策を見つけようとしたところ、これを見つけましただから答える. 使用することを提案しますDNS名を解決するコマンド。残念ながら、これには 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: 権限のない回答:
行:1 文字:1
+ nslookup -q=ns example.com

どうやら、NSLookup は、応答に非権威ネーム サーバーからのレコードが含まれている場合にエラーを返します。ただし、あなたのケースではそれは問題ではないようですので、上記のようにエラーを無視できます。

関連情報