我想创建一个脚本来在网络连接发生变化时做各种事情。例如,如果机器连接到我的办公室网络,我可能希望它:
- 自己静音
- 更改其 DNS
- 更改其代理设置
- 更改默认打印机
然后,当机器离开办公室网络时,它可能会恢复其中的一些。
据推测,“活动网络”将基于 IP 地址/网关范围或 WIFI 网络名称等。
你有什么推荐的工具来完成这个吗?我可以看到这样的事情适用于许多 IT 专业人员,所以我确信那里有一些很好的提示。
请注意,这需要在网络发生变化时起作用——而不仅仅是在用户登录/注销时。
我想创建一个脚本来在网络连接发生变化时做各种事情。例如,如果机器连接到我的办公室网络,我可能希望它:
然后,当机器离开办公室网络时,它可能会恢复其中的一些。
据推测,“活动网络”将基于 IP 地址/网关范围或 WIFI 网络名称等。
你有什么推荐的工具来完成这个吗?我可以看到这样的事情适用于许多 IT 专业人员,所以我确信那里有一些很好的提示。
请注意,这需要在网络发生变化时起作用——而不仅仅是在用户登录/注销时。
您可以使用任务计划程序来做到这一点:
以防万一,那里还有计算机“暂停”和“恢复”可用的事件。例如,我使用它们在这些事件上停止并重新启动 Hamachi,否则它似乎在我的机器上出现问题。
对于计算机“暂停”,您可以使用日志“Microsoft-Windows-Kernel-Power/Thermal-Operational”,源“内核-电源”,事件 ID 为 42。
对于计算机“恢复”,您可以使用日志“系统”,源“Power-Troubleshooter”,事件 ID 为 1。
对于用户登录/注销,我不知道任务计划程序下的事件(但我相信它们在那里也可用),但您可以在此处配置它:
您可以在同一窗口的“计算机配置”文件夹下为计算机“启动”和“关机”事件执行类似的操作。启动脚本在用户登录之前在系统帐户下运行。
Windows XP(和2000?我不记得......)中的“网络位置感知”服务(http://msdn.microsoft.com/en-us/library/ms739931(VS.85).aspx )和up 将启用此功能,但我还没有找到任何人编写应用程序来利用它的地方。我很想自己编写一些代码,但我没有足够的空闲周期来开始考虑它。
这不会是一个简单的小 VBScript 的事情,但也不会是那么多的编码。也许有人可以接受这个想法并实施它。http://www.microsoft.com/downloads/details.aspx?familyid=ef8a6228-f11d-4ba0-b73e-dd8dc7dd11e8&displaylang=en甚至还有示例代码。
有很多次我想要这个功能,我想有很多人想看到它。
我之前在Net Profiles方面取得了一些成功。
使用 .net 框架版本 2,可以使用 System.Net.NetworkInformation 命名空间。由此您可以确定:
网络可用性:NetworkAvailabilityChangedEventHandler() 网络地址更改:NetworkAddressChangedEventHandler() ipaddress:IPAddressInformation
等等。
我不知道其中有多少可以通过 powershell 获得,因为我不使用它。但是我编写了一个非常简单的 vb.net 托盘应用程序,它只监视网络可用性并在网络可用时连接到网络共享。如果您对代码的基本原理感兴趣,请告诉我。
这是一种侧面和部分的答案(甚至没有记录,因为我似乎找不到原始文章),但我相当确定 Windows 7 在打印机对象上有一个属性表,允许您更改默认值取决于子网。
我也很想看到解决您列表其余部分的功能。
您可以创建一个读取 ipconfig 命令结果的批处理文件,并让它每 5 秒左右运行一次...