powershell-windows-autoproxy.psm1
# param ( # [string[]]$WslPath # ) # Base $proxyEnable = (Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').ProxyEnable $proxyServer = (Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').ProxyServer $proxyPort = $proxyServer.Split(':')[1] $proxyOverride = (Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').ProxyOverride $no_proxy = ($proxyOverride -split ";") -join "," $no_proxy = $no_proxy -replace ",<local>", "" $checkProxy = [Environment]::GetEnvironmentVariable('http_proxy') # # WSA # $WsaService = Get-Service -Name WsaService -ErrorAction SilentlyContinue # if ($WsaService) { # $WsaEnabled = $WsaService.Status -eq 'Running' # $adbCommand = Get-Command -Name adb -ErrorAction SilentlyContinue # # $WsaIP=$(Get-NetIPAddress -InterfaceAlias 'vEthernet (WSLCore)' -AddressFamily IPV4).IPAddress # $WsaIP = 192.168.31.1 # } # # WSL # $WslService = Get-Service -Name WslService -ErrorAction SilentlyContinue # if ($WslService) { # $WslIP=$(Get-NetIPAddress -InterfaceAlias 'vEthernet (WSL)' -AddressFamily IPV4).IPAddress # $WslProxyContent = "export http_proxy=http://${WslIP}:${proxyPort}" # $WslProxyContent += "`nexport https_proxy=http://${WslIP}:${proxyPort}" # $WslProxyContent += "`nexport all_proxy=socks5://${WslIP}:${proxyPort}" # $WslProxyContent += "`nexport no_proxy=${no_proxy}" # $WslProxyContent += "`ngit config --global http.proxy http://${WslIP}:${proxyPort}" # $WslProxyContent += "`ngit config --global https.proxy http://${WslIP}:${proxyPort}" # $WslNoProxyContent = "git config --global --unset http.proxy" # $WslNoProxyContent += "`ngit config --global --unset https.proxy" # } function proxy { if ($proxyServer) { # PowerShell [Environment]::SetEnvironmentVariable("http_proxy", "http://$proxyServer") [Environment]::SetEnvironmentVariable("https_proxy", "http://$proxyServer") [Environment]::SetEnvironmentVariable("all_proxy", "socks5://$proxyServer") [Environment]::SetEnvironmentVariable("no_proxy", $no_proxy) git config --global http.proxy "http://$proxyServer" git config --global https.proxy "http://$proxyServer" # # WSA # if ($WsaEnabled) { # if (-not $adbCommand) { # Write-Host "adb command not found. Installing adb..." # winget install Google.PlatformTools # } else { # adb connect 127.0.0.1:58526 # if (adb devices | Select-String -Pattern "device$") { # adb shell settings put global http_proxy ${WsaIP}:${proxyPort} # } # } # } # # WSL # if($WslPath) { # foreach ($path in $WslPath) { # $WslProxyContent | Out-File -FilePath "$path\.proxy.sh" -Encoding utf8 -NoNewline # } # } } } function noproxy { # PowerShell [Environment]::SetEnvironmentVariable("http_proxy", $null) [Environment]::SetEnvironmentVariable("https_proxy", $null) [Environment]::SetEnvironmentVariable("all_proxy", $null) [Environment]::SetEnvironmentVariable("no_proxy", $null) git config --global --unset http.proxy -ErrorAction SilentlyContinue git config --global --unset https.proxy -ErrorAction SilentlyContinue # # WSA # if ($WsaEnabled) { # if (adb devices | Select-String -Pattern "device$") { # adb shell settings put global http_proxy :0 # } # } # # WSL # if($WslPath) { # foreach ($path in $WslPath) { # $WslNoProxyContent | Out-File -FilePath "$path\.proxy.sh" -Encoding utf8 -NoNewline # } # } } if ($proxyEnable) { proxy } elseif ($checkProxy) { noproxy } $exportModuleMemberParams = @{ Function = @( 'proxy', 'noproxy' ) } Export-ModuleMember @exportModuleMemberParams |