#!/usr/bin/env bash # # {{@@ header() @@}} # WINHOME="$(echo "$(cmd.exe /C "echo %USERPROFILE%")" | tr -d '\r')" WINHOMEWSL="$(wslpath ${WINHOME})" cat < "${WINHOMEWSL}/enablewslhypervforwarding.ps1" #at top of script if (! #current role (New-Object Security.Principal.WindowsPrincipal( [Security.Principal.WindowsIdentity]::GetCurrent() #is admin? )).IsInRole( [Security.Principal.WindowsBuiltInRole]::Administrator ) ) { #elevate script and exit current non-elevated runtime Start-Process \` -FilePath 'powershell' \` -ArgumentList ( #flatten to single array '-File', \$MyInvocation.MyCommand.Source, \$args \` | %{ \$_ } ) \` -Verb RunAs exit } Set-NetIPInterface -ifAlias "vEthernet (Default Switch)" -Forwarding Enabled Set-NetIPInterface -ifAlias "vEthernet (WSL)" -Forwarding Enabled EOF powershell.exe -ExecutionPolicy Bypass -File "${WINHOME}\enablewslhypervforwarding.ps1" sleep 3 powershell.exe -ExecutionPolicy Bypass "Get-NetIPInterface | select ifIndex,InterfaceAlias,AddressFamily,ConnectionState,Forwarding | Sort-Object -Property IfIndex | Format-Table" rm ${WINHOMEWSL}/enablewslhypervforwarding.ps1