投稿

ラベル(ping)が付いた投稿を表示しています

Test-Connectionの最速を目指す

でも、pingでいいじゃない? そんな! 元も子もないことを! 確かに、PowerShellだろうとBashだろうと「ping.exe」は握手と同じくらいのネットワーク技術者の共通言語、四則計算レベルの常識と言って然るべきです。 でも、あえて、WindowsでPowerShellを使いたい、という欲求もある人もいるんです。そのはずです! なので、ちょろっと考えてみました。ご一読をどうぞ。 Test-Connection PowerShellでのping.exeに相当するものは、Test-Connectionです。以下の使い方で構いません。 Test-Connection localhost だが、試してもらうとわかりますが、これの使い勝手が悪い。というか、遅い。 localhostならまだいいですが、たまに正常に動いていてもすぐCtrl+Cを押したくなるくらいに遅い。 Test-Connectionが遅い理由 ではどこでNetBIOS Name Queryが発行されているのかというと、その原因はTest-Connectionの戻り値にあります。 (中略) プロパティ内で[System.Net.Dns]::GetHostEntry()メソッドを発行しIPアドレスの逆引きをしていることがわかります。 このメソッドは内部でgethostbyaddr()関数を使用していますのでNetBIOS Name Queryを含めた名前解決*2が実行され、その結果待ちにより処理が遅くなってしまうのです。 Test-Connectionが遅い理由と対策方法について - しばたテックブログ 上記ブログにもありますが、戻り値の IPV4Address と IPV6Address がこういう悪さ?をしているようです。 TypeName : System.Management.ManagementObject#root\cimv2\Win32_PingStatus Name : IPV4Address MemberType : ScriptProperty Definition : System.Object IPV4Address {get=$iphost = [System.Net.Dns]::GetHostEntry($this.ad...