求助:如何通过PowerShell脚本将WSL的Hyper-V虚拟交换机设置为外部模式?执行脚本及启动WSL均报错
求助:如何通过PowerShell脚本将WSL的Hyper-V虚拟交换机设置为外部模式?执行脚本及启动WSL均报错
我来帮你梳理下问题的解决思路,你遇到的两个问题其实都是WSL和Hyper-V交换机联动的常见坑:
第一个问题:Set-VMSwitch 参数集报错
你执行的命令之所以提示参数集无法解析,大概率有两个原因:
- 现有WSL虚拟交换机正被WSL实例占用,处于活跃状态,无法直接修改配置
- 网卡名称/描述的参数搭配或写法有问题
解决步骤可以这样来:
- 先彻底关闭所有WSL实例,避免交换机被占用:
wsl --shutdown - 确认你要绑定的物理网卡的正确信息,避免名称/描述写错:
从输出里找到你要使用的网卡(比如你说的"Ethernet 2"或者"Intel"开头的完整描述),复制准确的名称或描述内容。Get-NetAdapter | Select-Object Name, InterfaceDescription - 重新执行修改命令,这次确保参数准确且交换机处于非活跃状态:
如果你用网卡名称:
如果你用网卡描述: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要使用你创建的新交换机:
- 同样先关闭WSL:
wsl --shutdown - 在你的Windows用户目录下(比如
C:\Users\你的用户名\)创建或编辑.wslconfig文件,添加以下内容:
这里的[wsl2] networkingMode=bridged vmSwitch=WSLvmSwitch=WSL要和你新建的交换机名称完全一致,如果你的交换机叫别的名字,就改成对应的名称。 - 保存文件后,重新启动WSL,应该就能正常识别到网络了。
另外补充个小提醒:如果修改现有交换机还是不行,也可以直接删除默认的WSL交换机,再重新创建外部交换机——先执行Remove-VMSwitch -Name WSL,再用New-VMSwitch创建,然后按上面的方法配置.wslconfig就行。
备注:内容来源于stack exchange,提问作者mentics
相关产品推荐
相关产品推荐

