![执行前等待 DHCP 答复的 VBScript](https://linux22.com/image/494615/%E6%89%A7%E8%A1%8C%E5%89%8D%E7%AD%89%E5%BE%85%20DHCP%20%E7%AD%94%E5%A4%8D%E7%9A%84%20VBScript.png)
我正在编写一些在计算机(XP)启动时自动执行的脚本,该脚本实际上是将网络驱动器映射到 Windows。我遇到的问题是网络中的 DHCP 响应速度不够快,并且脚本在系统获取 IP 之前执行。因此会发生错误。
在将系统置于 AD 下之前,我的解决方案是让脚本“休眠”约 30 秒,当然这只是一个临时解决方案。有没有相关的脚本可以完成这样的工作?
答案1
解决这个问题的一个常见(但有点笨拙)方法是编写一个“等待网络”的函数,本质上是尝试 ping 主机直到成功。您可以选择包含一个超时值,脚本最终将在该超时值处放弃。如果您希望我发布它,我有一个基于 JScript 的此函数版本。
我认为更优雅的方法是使用 WMI 循环查询网络适配器的状态,直到获得有效的 IP 地址。不过我没有这样做的例子。
在选择解决方案时,还需要考虑以下几点。您需要自行决定解决方案的稳健程度。
- DHCP 返回了有效 IP 并不意味着你可以连接到文件服务器
- 仅仅因为你可以 ping 文件服务器并不意味着映射驱动器总是有效的
答案2
我无法从问题中确定,但如果 PC 加入了域,则可以应用该策略:
计算机配置\管理模板\系统\登录\
计算机启动和登录时始终等待网络
通过 GPO 强制 PC 等待网络后再给出登录提示。如果 PC 不是域成员,您可以使用 GPEdit 或通过 reghack 设置相同的策略。