1

ネットワーク経由でコンピューターで実行するタスクを自動化するために、いくつかの VBScript を作成しました。これらはほとんどのタスクでうまく機能しますが、ネットワーク内では、DNS の IP アドレスが常に正しいという問題があります。これは主に、ワイヤレス ネットワークと有線ネットワーク上のマシンの IP 範囲が異なるラップトップで発生します。

たとえば、マシンが朝に有線で起動し、IP アドレス 10.10.10.1 を取得する場合があります。

ワイヤレスに切り替えると、別のサブネットでアドレスを取得します: 10.11.10.1

そのマシンに接続しようとすると、コンピュータに新しいアドレスが割り当てられているにもかかわらず、古い IP アドレス (10.10.10.1) が返されます。

マシンが ping を実行しなくても、\computer name\c$ 経由でそのコンピューターの C$ 共有に接続できることがわかりました。明らかに、別の種類のアドレス解決が行われています。私の質問は、これを利用して VBScript が WMI に接続できるようにするにはどうすればよいかということです。

ありがとう!

4

3 に答える 3

1

あなたの問題は名前解決です。Windows は、DNS と NetBIOS の 2 種類の名前解決を使用します。

DNS は .comcast.net や www.google.com のような名前を解決します。NetBIOS は、コンピュータ名のように 15 文字以下の名前を解決します。

コンピュータが IP アドレスに変換する方法がわからない名前を探す場合、DNS サーバーにアクセスしたり、NetBIOS の名前解決を使用したりします。名前を検索すると、その名前を一定期間 (通常は約 1 時間) キャッシュに保存してから、再度検索します。

次のようにコマンドラインを使用して、名前解決の種類ごとにコンピューターがキャッシュした名前のリストを表示できます。

DNS
  ipconfig -displaydns
NetBIOS
  nbtstat -c

これらの各コマンドでは、そのキャッシュもクリアできます。これにより、システムは名前が指す IP アドレスを再検出します。これらのコマンドは次のとおりです。

DNS
  ipconfig -flushdns
NetBIOS nbtstat
  -R

これらのコマンドの間に、どのタイプの名前解決が原因であるかを特定し、そのキャッシュをフラッシュすることで解決できるはずです。

于 2009-05-20T21:34:01.923 に答える
1

DNS に正しいアドレスがない場合は、おそらく NetBios で解決されている可能性があります。あなたがしなければならないことは、WINS サーバーまたはネットワークへのブロードキャストを介してコンピュータ名を解決することです。ネットワーク環境に応じて、これらのオプションのいずれかまたは両方を使用します。

Microsoft には、少なくとも WINS から名前を検索できるNBLookupというツールがあります。

NBLookup を呼び出して、結果を解析できます。VBScript 内でネイティブに NetBios を解決する別の方法を思い出すことはありませんが、最近はあまり詳しく調べていません。

于 2009-02-13T14:45:13.397 に答える
0

私自身の経験から、Microsoft TechNet ScriptCenterには、VBScript に関連する必要なものがほぼすべて揃っていることがわかりました。これまでに調べたことのない VBScript の新しい領域を掘り下げたい場合は、通常、ここから始めます。

Microsoft TechNet Web サイトのWMI FAQには、ScripCenter へのリンクと、WMI のスクリプト作成方法を学習するための他の多くの有用なサイトへのリンクがあります。誰かがあなたが必要とするものをすでに書いているはずなので、あなたが望むことをすでに行っているスクリプトを見つけることをお勧めします。

クライアントでの TCP/IP ネットワークの自動化という記事には、この問題の解決を開始するために必要なものが含まれている場合があります。

于 2009-02-06T19:53:54.627 に答える