プロが教えるわが家の防犯対策術!

いつもお世話になります。
VBScriptのご質問です。

ローカルネットワーク接続の設定でIPアドレスを固定から
自動的に取得に変更するという要件なのですが
ネットでは、Win32_NetworkAdapterConfigurationクラスの
EnableDHCPが紹介されていたので試したところ、
使用するIPが「192.164.nn.nn」から「0.0.0.0」と変わっただけで
自動的に取得するに変更はされていませんでした。

netshコマンドをコマンド実行で埋め込んでもいいのですが
出来れば、Win32_NetworkAdapterConfigurationを使う方法を
知りたいです。

アドバイス宜しくお願い致します。

A 回答 (1件)

手動で自動取得設定にしたら DHCP からアドレスを受け取れるっていう大前提はクリアしていると勝手に期待しています。



まずはどんなスクリプトを書いたのか、提示できないのでしょうかね。
単純に DHCP を有効にするだけなのか、その他の設定も連動して変更するのかとか、要件があるでしょうに。

私のところでは DHCP 化するにあたり、以下の方針で行いました。
1. DHCP から受け取るもの
IP アドレス
ルーター(デフォルト ゲートウェイ) のアドレス
DNS サーバーのアドレス
DNS ドメイン名("この接続の DNSサフィックス" という項目)

2. 静的に設定するもの
DNSの検索サフィックス順 (社内に複数のドメインが存在するため)


スクリプトは以下のような流れ。
1. 無効化されていないアダプターのうち、DHCP が無効になっているアダプターのコレクションを取得する。
2. コレクションをループして 1つずつのアダプターに設定を以下の行う。
3. 静的に設定されていた DNS サフィックスを空にする。
4. 静的に設定されていた DNS サーバーのアドレスを空にする。
5. 3と4をアダプターごとに行う。
6. コレクション全体に対して DNS 検索サフィックス順を設定する。


Dim locatorObject, serviceObject
Set locatorObject = WScript.CreateObject("WbemScripting.SWbemLocator")
Set serviceObject = locatorObject.ConnectServer()
serviceObject.Security_.ImpersonationLevel = 3

Dim dnsServers, dnsSuffixSearchOrders
dnsServers = Array()
dnsSuffixSearchOrders = Array("hoge1.local", "hoge2.local", "hoge3.local")

Dim ipConfigItems, ipConfig
Set ipConfigItems = serviceObject.ExecQuery( _
          "SELECT * FROM Win32_NetworkAdapterConfiguration " & _
          "WHERE (IPEnabled = True) AND (DHCPEnabled = False)")
For Each ipConfig In ipConfigItems
  ipConfig.SetDNSDomain()
  ipConfig.SetDNSServerSearchOrder(dnsServers)
  ipConfig.EnableDHCP()
Next

Set ipConfigItems = serviceObject.Get("Win32_NetworkAdapterConfiguration")
ipConfigItems.SetDNSSuffixSearchOrder(dnsSuffixSearchOrders)

上記コードのインデントは全角空白なので、コピペしたら半角空白にすること。
    • good
    • 0
この回答へのお礼

temtecomai2様

お礼が遅くなりすみませんでした。
丁寧なご説明と、コードまで書いて頂き
ありがとうございました。

勉強させて頂きます。

お礼日時:2011/04/02 23:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!