AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 26056
Accepted
Michael Haren
Michael Haren
Asked: 2009-06-16 10:23:29 +0800 CST2009-06-16 10:23:29 +0800 CST 2009-06-16 10:23:29 +0800 CST

当我的网络连接发生变化时,如何运行脚本?

  • 772

我想创建一个脚本来在网络连接发生变化时做各种事情。例如,如果机器连接到我的办公室网络,我可能希望它:

  • 自己静音
  • 更改其 DNS
  • 更改其代理设置
  • 更改默认打印机

然后,当机器离开办公室网络时,它可能会恢复其中的一些。

据推测,“活动网络”将基于 IP 地址/网关范围或 WIFI 网络名称等。

你有什么推荐的工具来完成这个吗?我可以看到这样的事情适用于许多 IT 专业人员,所以我确信那里有一些很好的提示。

请注意,这需要在网络发生变化时起作用——而不仅仅是在用户登录/注销时。

scripting networking windows-xp
  • 6 6 个回答
  • 20284 Views

6 个回答

  • Voted
  1. Roland Pihlakas
    2013-08-04T07:31:47+08:002013-08-04T07:31:47+08:00

    您可以使用任务计划程序来做到这一点:

    1. 右键单击“任务计划程序库”
    2. 点击“创建任务”
    3. 对于“名称:”字段,写下您的新任务名称。
    4. 检查“安全选项”区域是否有您想要的复选框。
    5. 在“触发器”选项卡下单击“新建...”
    6. 选择“开始任务:”=>“在事件中”
    7. 选择“日志:”=>“Microsoft-Windows-NetworkProfile/Operational”
    8. 选择“来源:”=>“网络配置文件”
    9. 写入“事件 ID:” => 10000
    10. 确定此对话框。
    11. 在“操作”选项卡下单击“新建...”
    12. 选择“操作:”=>“启动程序”
    13. 对于“程序/脚本:”,浏览到您最喜欢的脚本文件。
    14. 确定此对话框。
    15. 根据您的喜好设置有关“空闲”、“交流电源”等条件的“条件”选项卡。
    16. 还要在“设置”选项卡下进行设置。
    17. OK,到这里就全部搞定了。
    18. 测试新事件。

    以防万一,那里还有计算机“暂停”和“恢复”可用的事件。例如,我使用它们在这些事件上停止并重新启动 Hamachi,否则它似乎在我的机器上出现问题。
    对于计算机“暂停”,您可以使用日志“Microsoft-Windows-Kernel-Power/Thermal-Operational”,源“内核-电源”,事件 ID 为 42。
    对于计算机“恢复”,您可以使用日志“系统”,源“Power-Troubleshooter”,事件 ID 为 1。

    对于用户登录/注销,我不知道任务计划程序下的事件(但我相信它们在那里也可用),但您可以在此处配置它:

    1. 启动gpedit.msc
    2. 打开“用户配置”
    3. 打开“Windows 设置”
    4. 单击“脚本(登录/注销)”
    5. 在右窗格中,您可以为“登录”和“注销”事件分配脚本。请注意,如果您分配多个脚本,则不要假定它们是同步运行的。他们可能不会。对于这种情况,请改用单个脚本,按顺序调用其他脚本。我没有检查这些脚本在哪个帐户下运行 - 是用户还是系统?

    您可以在同一窗口的“计算机配置”文件夹下为计算机“启动”和“关机”事件执行类似的操作。启动脚本在用户登录之前在系统帐户下运行。

    • 11
  2. Best Answer
    Evan Anderson
    2009-06-16T10:29:41+08:002009-06-16T10:29:41+08:00

    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甚至还有示例代码。

    有很多次我想要这个功能,我想有很多人想看到它。

    • 2
  3. MattB
    2009-06-16T11:05:24+08:002009-06-16T11:05:24+08:00

    我之前在Net Profiles方面取得了一些成功。

    • 1
  4. RobS
    2009-09-10T00:28:10+08:002009-09-10T00:28:10+08:00

    使用 .net 框架版本 2,可以使用 System.Net.NetworkInformation 命名空间。由此您可以确定:

    网络可用性:NetworkAvailabilityChangedEventHandler() 网络地址更改:NetworkAddressChangedEventHandler() ipaddress:IPAddressInformation

    等等。

    我不知道其中有多少可以通过 powershell 获得,因为我不使用它。但是我编写了一个非常简单的 vb.net 托盘应用程序,它只监视网络可用性并在网络可用时连接到网络共享。如果您对代码的基本原理感兴趣,请告诉我。

    • 1
  5. Kara Marfia
    2009-09-10T12:13:57+08:002009-09-10T12:13:57+08:00

    这是一种侧面和部分的答案(甚至没有记录,因为我似乎找不到原始文章),但我相当确定 Windows 7 在打印机对象上有一个属性表,允许您更改默认值取决于子网。

    我也很想看到解决您列表其余部分的功能。

    • 1
  6. sangretu
    2009-06-16T10:29:39+08:002009-06-16T10:29:39+08:00

    您可以创建一个读取 ipconfig 命令结果的批处理文件,并让它每 5 秒左右运行一次...

    • 0

相关问题

  • 10 Gb 网络:在光纤和双绞线之间做出决定

  • 如何在 Windows Server PPTP VPN 中自动为客户端分配路由?

  • 为什么我的电脑休眠时 VPN 连接会中断?[关闭]

  • 有什么软件可以模拟局域网?

  • 带宽利用工具?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve