VBScriptでネットワーク設定のサンプルプログラムです。
Win32_NetworkAdapterConfiguration class
https://msdn.microsoft.com/library/windows/hardware/aa394217
Windows 10 Version 10.0.15063で検証しました。
- Static
- DHCP
ネットワーク・インターフェイスがIndex = 1のデバイスに設定しています。
また管理者権限で実行しないとGatewayの設定でエラーコード67が発生しました。
SetGateways method of the Win32_NetworkAdapterConfiguration class
https://msdn.microsoft.com/ja-jp/library/windows/hardware/aa393301
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
strComputer = "." Dim strIPAddress Dim strSubnetMask Dim strGateway Dim strDNSServers1, strDNSServers2 Dim strWINSServers1, strWINSServers2 strIPAddress = "192.168.100.1" strSubnetMask = "255.255.255.0" strGateway = "192.168.100.254" strDNSServers1 = "192.168.100.100" strDNSServers2 = "192.168.100.101" strWINSServers1 = "192.168.100.110" strWINSServers2 = "192.168.100.111" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration WHERE Index = 1") For Each objItem in colItems errEnable = objItem.EnableStatic(array(strIPAddress), array(strSubnetMask)) errGateways = objItem.SetGateways(array(strGateway)) errDNSServer = objItem.SetDNSServerSearchOrder(array(strDNSServers1,strDNSServers2)) errWINSServer = objItem.SetWINSServer(strWINSServers1, strWINSServers2) If errEnable = 0 Then wscript.echo "IPアドレスは変更されました。" Else wscript.echo errEnable wscript.echo "IPアドレスを変更することができませでした。" End If Next |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
イーサネット アダプター Ethernet0: 接続固有の DNS サフィックス . . . . .: 説明. . . . . . . . . . . . . . . . .: Intel(R) 82574L Gigabit Network Connection 物理アドレス. . . . . . . . . . . . .: 00-0C-29-7A-6F-5C DHCP 有効 . . . . . . . . . . . . . .: いいえ 自動構成有効. . . . . . . . . . . . .: はい IPv4 アドレス . . . . . . . . . . . .: 192.168.100.1(優先) サブネット マスク . . . . . . . . . .: 255.255.255.0 デフォルト ゲートウェイ . . . . . . .: 192.168.100.254 DNS サーバー. . . . . . . . . . . . .: 192.168.100.100 192.168.100.101 プライマリ WINS サーバー. . . . . . .: 192.168.100.110 セカンダリ WINS サーバー. . . . . . .: 192.168.100.111 NetBIOS over TCP/IP . . . . . . . . .: 有効 |
Gateway,DNS,WINSをnulに設定、DHCP有効にしてからRenewしています。
タイミングなのかRenewしてもipconfigで確認するとGatewayなどの情報が残っていることがあります。
DHCP有効にしてからRenewまで少しwaitした方がいいかもしれません。
こちらこ管理者権限で実行しないとエラーになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration WHERE Index = 1") For Each objItem in colItems errGateways = objItem.SetGateways(nul) errDNS = objItem.SetDNSServerSearchOrder(nul) errWINS = objItem.SetWINSServer("", "") errEnable = objItem.EnableDHCP() Ret = objItem.RenewDHCPLease() If errEnable = 0 Then wscript.echo "DHCPに変更されました。" Else wscript.echo "DHCPに変更することができませでした。" End If Next |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
イーサネット アダプター Ethernet0: 接続固有の DNS サフィックス . . . . .: localdomain 説明. . . . . . . . . . . . . . . . .: Intel(R) 82574L Gigabit Network Connection 物理アドレス. . . . . . . . . . . . .: 00-0C-29-7A-6F-5C DHCP 有効 . . . . . . . . . . . . . .: はい 自動構成有効. . . . . . . . . . . . .: はい IPv4 アドレス . . . . . . . . . . . .: 192.168.190.128(優先) サブネット マスク . . . . . . . . . .: 255.255.255.0 リース取得. . . . . . . . . . . . . .: 2017年9月1日 22:43:49 リースの有効期限. . . . . . . . . . .: 2017年9月1日 23:16:04 デフォルト ゲートウェイ . . . . . . .: 192.168.190.2 DHCP サーバー . . . . . . . . . . . .: 192.168.190.254 DNS サーバー. . . . . . . . . . . . .: 192.168.190.2 プライマリ WINS サーバー. . . . . . .: 192.168.190.2 NetBIOS over TCP/IP . . . . . . . . .: 有効 |