You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell判断Windows 10笔记本是否仅有线连接局域网,以控制Access应用启动

如何通过PowerShell判断Windows 10笔记本是否仅有线连接局域网,以控制Access应用启动

我之前也碰到过类似的Access网络连接问题——无线连接的不稳定确实会让Access后端连接出各种状况,尤其是用户在有线/无线切换时没关应用的情况。针对你的需求,我整理了一套实用的PowerShell方案,能准确判断笔记本是否仅通过有线网卡连接到局域网,再决定是否启动Access应用。

核心思路

我们需要两个关键判断:

  1. 至少有一个启用且已连接的有线以太网适配器
  2. 所有启用的无线适配器都处于未连接状态(或者无线适配器本身被禁用)

实现函数

这里用Get-CimInstance来获取网卡信息,比旧的Get-WmiObject更可靠。下面是封装好的判断函数:

function Test-WiredOnlyConnection {
    # 获取所有启用的网络适配器
    $allEnabledAdapters = Get-CimInstance Win32_NetworkAdapter | Where-Object { $_.NetEnabled -eq $true }

    # 筛选已连接的有线适配器(InterfaceType=6 对应以太网)
    $activeWiredAdapters = $allEnabledAdapters | Where-Object {
        $_.InterfaceType -eq 6 -and $_.NetConnectionStatus -eq 2
    }

    # 筛选已连接的无线适配器(InterfaceType=71 对应无线局域网)
    $activeWirelessAdapters = $allEnabledAdapters | Where-Object {
        $_.InterfaceType -eq 71 -and $_.NetConnectionStatus -eq 2
    }

    # 判断逻辑:有活跃有线网卡,且无活跃无线网卡
    return ($activeWiredAdapters.Count -ge 1) -and ($activeWirelessAdapters.Count -eq 0)
}

代码说明

  • InterfaceType的数值是标准定义:6代表有线以太网,71代表无线WLAN,这个比靠网卡名称判断更通用(不会因为不同厂商的网卡命名差异出错)
  • NetConnectionStatus=2表示适配器已成功连接到网络(其他状态比如0=断开,1=连接中,都不算有效连接)
  • 函数返回$true时,说明当前是仅有线连接的状态,符合启动Access的条件

完整启动脚本示例

把判断逻辑和Access启动结合起来,你可以做成一个快捷方式让用户点击:

# 调用判断函数
$isWiredOnly = Test-WiredOnlyConnection

if ($isWiredOnly) {
    Write-Host "检测到稳定有线连接,正在启动Access应用..."
    # 替换成你的Access前端文件路径
    Start-Process "C:\Path\To\Your\AccessApp.accdb"
} else {
    Write-Warning "当前无线连接活跃或无有效有线连接,无法启动Access应用,请连接有线网络后重试。"
    # 可以弹出提示框让用户更清楚
    [System.Windows.MessageBox]::Show("当前无线连接活跃或无有效有线连接,无法启动Access应用,请连接有线网络后重试。", "连接检测提示", "OK", "Warning")
}

额外优化建议

如果你的公司局域网有固定IP网段,还可以加一步验证有线网卡获取的IP是否属于公司网段,进一步确保是连接到了公司LAN而不是其他有线网络:

# 在函数里添加IP验证逻辑
$companySubnet = "192.168.1." # 替换成你的公司网段前缀
$hasValidWiredIP = $activeWiredAdapters | ForEach-Object {
    Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "Index=$($_.Index)" | Where-Object {
        $_.IPAddress -match "^$companySubnet"
    }
}
# 把返回逻辑改成:($hasValidWiredIP.Count -ge 1) -and ($activeWirelessAdapters.Count -eq 0)

这样就能更精准地控制Access的启动条件,避免因为连了其他有线网络(比如家里的网线)而误启动。

备注:内容来源于stack exchange,提问作者serbach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:52:42