@@ -327,25 +327,28 @@ endlocal & exit /b %EXIT_CODE%
327327$httpPort = if ($env:OPENCODE_HTTP_PROXY_PORT) { $env:OPENCODE_HTTP_PROXY_PORT } else { "10809" }
328328$socksPort = if ($env:OPENCODE_SOCKS_PROXY_PORT) { $env:OPENCODE_SOCKS_PROXY_PORT } else { "10808" }
329329
330+ # Snapshot original proxy environment variables using canonical case-insensitive keys.
331+ # On Windows, environment variable names are case-insensitive; duplicate case variants in hashtables cause parser errors.
330332$oldEnv = @{
331- http_proxy = $env:http_proxy
332- https_proxy = $env:https_proxy
333- HTTP_PROXY = $env:HTTP_PROXY
334- HTTPS_PROXY = $env:HTTPS_PROXY
335- all_proxy = $env:all_proxy
336- ALL_PROXY = $env:ALL_PROXY
337- no_proxy = $env:no_proxy
338- NO_PROXY = $env:NO_PROXY
333+ HTTP_PROXY = [Environment]::GetEnvironmentVariable("HTTP_PROXY", "Process")
334+ HTTPS_PROXY = [Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Process")
335+ ALL_PROXY = [Environment]::GetEnvironmentVariable("ALL_PROXY", "Process")
336+ NO_PROXY = [Environment]::GetEnvironmentVariable("NO_PROXY", "Process")
339337}
340338
341- $env:http_proxy = "http://127.0.0.1:$httpPort"
342- $env:https_proxy = "http://127.0.0.1:$httpPort"
343- $env:HTTP_PROXY = "http://127.0.0.1:$httpPort"
344- $env:HTTPS_PROXY = "http://127.0.0.1:$httpPort"
345- $env:all_proxy = "socks5://127.0.0.1:$socksPort"
346- $env:ALL_PROXY = "socks5://127.0.0.1:$socksPort"
347- $env:no_proxy = "localhost,127.0.0.1,::1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,192.168.18.1"
348- $env:NO_PROXY = "localhost,127.0.0.1,::1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,192.168.18.1"
339+ $httpProxyUrl = "http://127.0.0.1:$httpPort"
340+ $socksProxyUrl = "socks5://127.0.0.1:$socksPort"
341+ $noProxyList = "localhost,127.0.0.1,::1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,192.168.18.1"
342+
343+ $env:HTTP_PROXY = $httpProxyUrl
344+ $env:HTTPS_PROXY = $httpProxyUrl
345+ $env:ALL_PROXY = $socksProxyUrl
346+ $env:NO_PROXY = $noProxyList
347+
348+ $env:http_proxy = $httpProxyUrl
349+ $env:https_proxy = $httpProxyUrl
350+ $env:all_proxy = $socksProxyUrl
351+ $env:no_proxy = $noProxyList
349352
350353# Check for external server targeting
351354foreach ($arg in $args) {
@@ -419,10 +422,13 @@ try {
419422 exit $LASTEXITCODE
420423} finally {
421424 foreach ($k in $oldEnv.Keys) {
422- if ($null -ne $oldEnv[$k]) {
423- [Environment]::SetEnvironmentVariable($k, $oldEnv[$k], "Process")
425+ $origVal = $oldEnv[$k]
426+ if ($null -ne $origVal) {
427+ [Environment]::SetEnvironmentVariable($k, $origVal, "Process")
428+ [Environment]::SetEnvironmentVariable($k.ToLowerInvariant(), $origVal, "Process")
424429 } else {
425430 [Environment]::SetEnvironmentVariable($k, $null, "Process")
431+ [Environment]::SetEnvironmentVariable($k.ToLowerInvariant(), $null, "Process")
426432 }
427433 }
428434}
0 commit comments