如何在网络连接/断开连接时启动命令?

dol*_*men 62 networking windows script wireless-networking hook

我有一个 wifi 连接,一旦建立无线链接,就需要使用网络表单进行身份验证。我知道如何使用使用curl/ curlIE的脚本自动进行身份验证。

但是,我如何在每次连接到特定网络连接时要求 Windows 调用我的脚本?

我也有兴趣在我的脚本的命令行上接收无线配置文件的名称或 ESSID。

nhi*_*kle 87

在 Windows Vista 和更高版本中,您可以使用带有事件日志触发器的计划任务来执行此操作。第一个事件将通过连接到网络触发,您将指定必须连接到哪个网络才能运行。当与任何网络断开连接时,将触发第二个事件。每个事件将运行您指定的特定任务;可能是你提到的脚本已经写好了。

设置连接到网络时的事件:

  1. 打开任务计划程序。您可以通过Task Scheduler在开始菜单搜索框中或在 下键入来找到它Programs | Accessories | System Tools
  2. 在 Task Scheduler 库中,通过单击Create Task右侧的 Actions 面板创建一个新任务。

    添加任务

  3. 为任务命名,例如“检测网络连接”或您选择的任何名称

  4. Triggers选项卡上,单击New...On an Event从下拉框中选择。

    下拉触发器

  5. 选择以下设置:

    • 日志: Microsoft-Windows-NetworkProfile/Operational
    • 来源: NetworkProfile
    • 事件编号: 10000
  6. 单击确定,然后转到Conditions选项卡。
  7. 选中该框Start only if the following network connection is available并选择要用于运行脚本的网络
  8. Actions选项卡下,单击New...并选择Start a program。输入要运行的脚本文件的位置,然后单击OK
  9. 设置您想要的任何其他任务设置,然后单击OK

设置与网络断开连接时的事件:

  1. 按照上面的步骤 2-4
  2. 使用以下事件触发器设置:
    • 日志: Microsoft-Windows-NetworkProfile/Operational
    • 来源: NetworkProfile
    • 事件编号: 10001
  3. 跳过步骤 6-7,因为您将不再连接到任何网络。因此,该事件将运行任何你从断开时的任何网络。
  4. 再次执行步骤 8-9

  • 我对 Win10 的观察是,当操作系统启动时,10000 事件会触发 3 次。看来即使是最后一次触发也可能是在 TCPIP 完全分配且路由表稳定下来之前。寻找当路由表更改或默认路由更改时触发的事件(作为打开和关闭扩展坞的代理,或启动/移动到 diff wifi 等) (3认同)

小智 16

似乎Start only if the following network connection is available在 Windows 10 周年更新后坏了。请改用此自定义触发器:

<QueryList>
  <Query Id="0" Path="System">
    <Select Path="Microsoft-Windows-NetworkProfile/Operational">
     *[System[(EventID=10000)]] and *[EventData[(Data[@Name="Name"]="YOUR-SSID-HERE")]]
    </Select>
  </Query>
</QueryList>
Run Code Online (Sandbox Code Playgroud)

在公司网络中,请使用域名称而不是 SSID。在这种情况下,事件的类别将是“域身份验证”而不是“私人”。