
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>con
NSLookup が STDERR に書き込んでいる内容を確認します。
権威のない回答:
これはその通りPowerShell がエラー メッセージの最初の行に返す内容:
nslookup: 権限のない回答:
行:1 文字:1
+ nslookup -q=ns example.com
どうやら、NSLookup は、応答に非権威ネーム サーバーからのレコードが含まれている場合にエラーを返します。ただし、あなたのケースではそれは問題ではないようですので、上記のようにエラーを無視できます。