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

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

我有一个 wifi 连接,需要在建立无线链接后使用 Web 表单进行身份验证。我知道如何通过使用curl/的脚本自动进行身份验证鍵盤

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

我还希望在我的脚本的命令行上接收无线配置文件的名称或 ESSID。

答案1

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

设置连接网络时的事件:

  1. 打开任务计划程序。你可以Task Scheduler在开始菜单搜索框中输入,或者在 下找到它Programs | Accessories | System Tools
  2. Create Task在任务计划程序库中,单击右侧的“操作”面板来创建新任务。

    添加任务

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

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

    下拉触发器

  5. 选择以下设置:

    • 日志:Microsoft-Windows-NetworkProfile/Operational
    • 来源:NetworkProfile
    • 事件 ID: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
    • 事件 ID:10001
  3. 跳过步骤 6-7,因为您将不再连接到任何网络。因此,此活动将运行任何断开连接的时间任何网络。
  4. 再次执行步骤 8-9

答案2

Start only if the following network connection is availableWindows 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>

在企业网络中,使用域名而不是 SSID。在这种情况下,事件的类别将是“域认证”而不是“私有”。

答案3

如果您恰好使用 Thinkpad,您可以利用适用于 Windows 7、Vista 和 XP 的 ThinkVantage Access Connection。

ThinkVantage Access Connection 是 ThinkPad 附带的网络连接管理器软件 - 如果没有,可从其支持网站下载。当您为您的位置创建新的配置文件时,会出现向导会询问您是否要配置一个程序列表,以便在该位置启动已连接。它还提供在断网时终止程序的功能。

请注意,该软件可以配置为在没有任何位置配置文件的情况下工作,这可能是初始状态 - 在这种情况下,无法配置在连接 wifi 时启动的程序列表:您必须创建一个连接配置文件来包含该列表。

根据我自己的经验,我尽量避免使用该软件 - 与不使用软件相比,连接需要更多的时间,并且有时在启动时无法建立新连接(可以通过手动重新连接来修复)。

该软件只适用于thinkpad自带的WIFI驱动。

顺便提一下,这款软件提供在用户登录前建立连接的功能,这是创建个人资料时的一个选项。如果没有这个功能,我不知道是否可行。

答案4

更新 @nhinkle 和 @KRR 的答案:我不得不使用以下 XML 查询,因为 Windows 有时会将 SSID“SSID_5G”的“名称”字段设置为“SSID_5G 2”。改用“说明”匹配(Windows 10,版本 20H2)

<QueryList>
  <Query Id="0" Path="System">
    <Select Path="Microsoft-Windows-NetworkProfile/Operational">
        *[System[(EventID=10000)]] and *[EventData[(Data[@Name="Descrioption"]="SSID_5G")]]
    </Select>
  </Query>
</QueryList>

相关内容