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

求助:如何通过PowerShell脚本将WSL的Hyper-V虚拟交换机设置为外部模式?执行脚本及启动WSL均报错

求助:如何通过PowerShell脚本将WSL的Hyper-V虚拟交换机设置为外部模式?执行脚本及启动WSL均报错

我来帮你梳理下问题的解决思路,你遇到的两个问题其实都是WSL和Hyper-V交换机联动的常见坑:

第一个问题:Set-VMSwitch 参数集报错

你执行的命令之所以提示参数集无法解析,大概率有两个原因:

  • 现有WSL虚拟交换机正被WSL实例占用,处于活跃状态,无法直接修改配置
  • 网卡名称/描述的参数搭配或写法有问题

解决步骤可以这样来:

  1. 先彻底关闭所有WSL实例,避免交换机被占用:
    wsl --shutdown
    
  2. 确认你要绑定的物理网卡的正确信息,避免名称/描述写错:
    Get-NetAdapter | Select-Object Name, InterfaceDescription
    
    从输出里找到你要使用的网卡(比如你说的"Ethernet 2"或者"Intel"开头的完整描述),复制准确的名称或描述内容。
  3. 重新执行修改命令,这次确保参数准确且交换机处于非活跃状态:
    如果你用网卡名称:
    Set-VMSwitch -Name WSL -SwitchType External -NetAdapterName "Ethernet 2" -AllowManagementOS $true
    
    如果你用网卡描述:
    Set-VMSwitch -Name WSL -SwitchType External -NetAdapterInterfaceDescription "Intel(R) 以太网连接 I219-V"
    
    (注意这里要写完整的网卡描述,不要只用Intel*通配符,通配符可能导致参数匹配失败)

第二个问题:新建交换机后WSL启动提示"网络未找到"

你新建了外部交换机但WSL不认,是因为WSL默认会使用它自动创建的虚拟交换机,不会自动识别你手动新建的。解决办法是告诉WSL要使用你创建的新交换机:

  1. 同样先关闭WSL:
    wsl --shutdown
    
  2. 在你的Windows用户目录下(比如C:\Users\你的用户名\)创建或编辑.wslconfig文件,添加以下内容:
    [wsl2]
    networkingMode=bridged
    vmSwitch=WSL
    
    这里的vmSwitch=WSL要和你新建的交换机名称完全一致,如果你的交换机叫别的名字,就改成对应的名称。
  3. 保存文件后,重新启动WSL,应该就能正常识别到网络了。

另外补充个小提醒:如果修改现有交换机还是不行,也可以直接删除默认的WSL交换机,再重新创建外部交换机——先执行Remove-VMSwitch -Name WSL,再用New-VMSwitch创建,然后按上面的方法配置.wslconfig就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:43:08