WSL设置网桥上网,IP设为固定IP
关机前需要关闭网桥,不然重新打开电脑后无法,无法开启网桥,出现这个情况可以打开网络连接,删除网桥即可。,保存以下PowerShell脚本为.ps1格式。
·
前题条件:
开启hyper-v
,保存以下PowerShell脚本为.ps1格式
打开网桥PowerShell脚本:
# 检查并以管理员身份运行PS并带上参数
$currentWi = [Security.Principal.WindowsIdentity]::GetCurrent()
$currentWp = [Security.Principal.WindowsPrincipal]$currentWi
if( -not $currentWp.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
$boundPara = ($MyInvocation.BoundParameters.Keys | foreach{'-{0} {1}' -f $_ ,$MyInvocation.BoundParameters[$_]} ) -join ' '
$currentFile = $MyInvocation.MyCommand.Definition
$fullPara = $boundPara + ' ' + $args -join ' '
Start-Process "$psHome\pwsh.exe" -ArgumentList "$currentFile $fullPara" -verb runas
return
}
#首先随意执行一条wsl指令,确保wsl启动,这样后续步骤才会出现WSL网络
echo "正在检测wsl运行状态..."
wsl ~ -e ls
echo "正在获取网卡信息..."
Get-NetAdapter
echo "`n正在将WSL网络桥接到以太网..."
Set-VMSwitch WSL -NetAdapterName WLAN
echo "`n正在修改WSL网络配置..."
#wsl ~ -e sh -c ./set_eth0.sh
#echo "`ndone"
#pause
关闭网桥PowerShell脚本:
# 检查并以管理员身份运行PS并带上参数
$currentWi = [Security.Principal.WindowsIdentity]::GetCurrent()
$currentWp = [Security.Principal.WindowsPrincipal]$currentWi
if( -not $currentWp.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
$boundPara = ($MyInvocation.BoundParameters.Keys | foreach{'-{0} {1}' -f $_ ,$MyInvocation.BoundParameters[$_]} ) -join ' '
$currentFile = $MyInvocation.MyCommand.Definition
$fullPara = $boundPara + ' ' + $args -join ' '
Start-Process "$psHome\pwsh.exe" -ArgumentList "$currentFile $fullPara" -verb runas
return
}
echo "正在解除wsl桥接..."
Set-VMSwitch WSL -SwitchType Internal
echo "正在重启wsl"
wsl --shutdown
#wsl ~ -e ls
#echo "`ndone"
#pause
注意事项:
关机前需要关闭网桥,不然重新打开电脑后无法,无法开启网桥,出现这个情况可以打开网络连接,删除网桥即可
如下图片
更多推荐
已为社区贡献1条内容
所有评论(0)