[url]http://www.microsoft.com/china/technet/community/scriptcenter/topics/networking/04_atnc_ipadd.mspx[/url]
管理客户端上的 DHCP
虽然 DHCP 已经是一种自动化方式,但是使用脚本可以帮助您自动配置一组客户端以利用 DHCP。通过 WMI 类 Win32_NetworkAdapterConfiguration 提供的属性和方法,您可以枚举 DHCP 设置,启用或禁用 DHCP,以及续订或中止租约。
表 9 说明了可用于 IP 地址分配的 Win32_NetworkAdapterConfiguration 属性。
表 9 Win32_NetworkAdapterConfiguration IP 地址分配属性
属性 | 类型 | 说明 |
DefaultIPGateway
|
字符串数组
|
计算机系统使用的默认网关的 IP 地址数组。
|
DHCPEnabled
|
布尔
|
如果是 True,DHCP 服务器会在建立网络连接时自动为计算机系统分配一个 IP 地址。
|
DHCPLeaseExpires
|
datetime
|
DHCP 服务器为计算机分配的租用 IP 地址的到期日期和时间。
|
DHCPLeaseObtained
|
datetime
|
DHCP 服务器为计算机分配的 IP 地址获得租约的日期和时间。
|
DHCPServer
|
字符串
|
DHCP 服务器的 IP 地址。
|
GatewayCostMetric
|
Uint16
|
用于计算最快、最可靠或最廉价路由的整数成本跃点数值(从 1 到 9999)数组。这个参数与
DefaultIPGateway 属性之间存在一一对应关系。
|
IPConnectionMetric
(Windows XP 的新增属性)
|
Uint32
|
绑定了 IP 的适配器的已配置路由的使用成本;对于 IP 路由表中的路由来说,这是一个加权值。如果在 IP 路由表中有多个指向目标计算机的路由,将使用跃点数最少的路由。默认值是 1。
|
IPAddress
|
字符串
|
与当前网络适配器相关的所有 IP 地址构成的数组。
|
IPSubnet
|
字符串
|
与当前网络适配器相关的所有子网掩码构成的数组。
|
上表中的所有属性都是只读的。类型 uint16 和 uint32 是由强类型编程语言使用的无符号整数类型;VBScript 可将它们有效地作为整数进行处理。
表 10 描述了可用于 IP 地址分配的 Win32_NetworkAdapterConfiguration 方法。
表 10 Win32_NetworkAdapterConfiguration IP 地址分配方法
方法 | 参数 | 说明 |
EnableDHCP
|
无
|
为使用这个网络适配器的服务启用 DHCP。DHCP 允许动态分配 IP 地址。
|
EnableStatic
|
IPAddress – 字符串数组
SubnetMask – 字符串数组
|
为目标网络适配器启用静态 TCP/IP 寻址。这样便会对此网络适配器禁用 DHCP。
|
ReleaseDHCPLease
|
无
|
释放已绑定到启用了 DHCP 的特定网络适配器的 IP 地址。
警告 如果在本地计算机上启用 DHCP,该选项会对这个特定的网络适配器禁用 TCP/IP。如果您没有访问目标系统的其他路径(即另一个绑定 TCP/IP 的网络适配器),所有 TCP/IP 通信都会中断。
|
ReleaseDHCPLeaseAll
|
无
|
静态方法。释放已绑定到所有启用了 DHCP 的网络适配器的 IP 地址。
警告 如果在本地计算机上启用 DHCP,此选项将终止所有的 DHCP TCP/IP 连接。
|
RenewDHCPLease
|
无
|
续订启用了 DHCP 的特定网络适配器上的 IP 地址。DHCP 服务器分配的 IP 地址的租约有一个截止日期;如果客户端打算继续使用分配的 IP 地址,就必须进行续订。
|
RenewDHCPLeaseAll
|
无
|
静态方法。续订所有启用了 DHCP 的网络适配器的 IP 地址。DHCP 服务器分配的 IP 地址的租约有一个截止日期;如果客户端打算继续使用分配的 IP 地址,就必须进行续订。
|
SetGateways
|
DefaultIPGateway – 字符串数组
GatewayCostMetric – unit16
|
指定一个网关列表,这些网关用于将数据包路由到该网络适配器连接的子网以外的子网。该方法仅在网络适配器处于静态 IP 模式时才有效。
|
上表中的所有方法都返回一个正整数:
• |
0 表示成功完成。
|
• |
1 表示成功完成,并需要重新启动。
|
• |
大于 1 的数字表示出现了某种问题,方法无法完成。WMI SDK 列出了这些方法的返回值的含义。
|
显示 DHCP 客户端信息
如果您在使用诸如 DHCP 之类的技术,使用脚本的第一步通常是确定与它相关的设置的当前配置。这也是本节及后面各节所用的一个步骤。
Win32_NetworkAdapterConfiguration 提供基于每个适配器的属性,这些属性显示是否启用了 DHCP;显示 DHCP 服务器的 IP 地址;显示租约获得和到期的日期和时间;显示客户端 IP 地址和子网掩码(各网络适配器可以具有一个以上的属性)。
因为 WMI 返回的日期和时间的格式可读性较差,所以在显示租约日期和时间时,需要将 WMI 日期和时间格式转换为对用户更友好的格式。
下面的脚本使用 Win32_NetworkAdapterConfiguration 的以下属性来显示网络客户端的 IP 地址分配设置:DHCPEnabled、DHCPServer、DHCPLeaseObtained、DHCPLeaseExpires、IPAddress 和 IPSubnet。只有在启用了 DHCP 时,此脚本才显示 DHCPServer、DHCPLeaseObtained 和 DHCPLeaseExpires 的设置。
此脚本不是使用 WSH WScript.Echo 方法直接显示设置,而是将设置收集起来并分配给一个字符串,然后再进行显示。接着,在使用 If ...Then 语句验证 DHCPEnabled 为 True 后,此脚本将显示从属设置。
由 Dhcpsettings.vbs、DHCPLeaseObtained 和 DHCPLeaseExpires 显示的设置中有两个是作为 DATETIME 值返回的。如果您显示原始值,它看上去就像下面这种形式:
20021201000230.000000+000
前四个数字代表年,随后的两个数字代表月,再后面的两个数字代表日,然后是小时、分、秒。您可以判断出它的含义,不过,得花点时间。
Windows XP 和 Windows Server 2003 向 WMI 脚本 API 中添加了一个新的 SWbemDateTime 对象。如果所有客户端运行的都是 Windows XP 和 Windows Server 2003,则可以使用该对象来更轻松地分析和转换 datetime 值。
但是,如果并非所有的网络主机都运行 Windows XP 或 Windows Server 2003,则可以采用一种更方便、更简单的解决方案:即使用 VBScript 的字符串处理功能,将 datetime 值分析成一种易读的格式。
在此脚本中,为了将 datetime 值转换为可读性较高的格式,Dhcpsettings 调用了函数 WMIDateToString(),并将 datetime 值作为参数传递给该函数。该函数使用 VBScript 内置的 Mid() 和 Left() 字符串函数来转换值。然后,它调用 VBScript CDate() 函数将变量值(所有 VBScript 变量的类型)强制转换为“Date”子类型,并将转换后的日期返回给脚本的主体。
有关 WMI DATETIME 格式的更多信息,请参见下文中的“使用 WMI 在一台计算机上设置时间”。
转载于:https://blog.51cto.com/foxhack/71213