Using PowerShell behind a proxy

2015-05-05 | Martin Hoppenheit | 1 min read

Suppose you try to load some resource from the web in PowerShell, e.g., with one of the following two commandlets:

PS> Invoke-WebRequest http://example.org
PS> Update-Help

If you get an “access denied” or “no network connection” error message there may be a web proxy blocking your way, demanding authentication.

What needs to be done? You have to configure PowerShell’s proxy settings. Some commandlets like Invoke-WebRequest offer options that let you set the proxy for just one command (lines broken for better readability):

PS> Invoke-WebRequest `
>>  -Proxy http://proxy.example.net:8080 `
>>  -ProxyUseDefaultCredentials `
>>  http://example.org

For commandlets that don’t have such options (like Update-Help), or if you’d rather set the proxy for the whole PowerShell session, issue the following command:

PS> (New-Object System.Net.WebClient).Proxy.Credentials = `
>>  [System.Net.CredentialCache]::DefaultNetworkCredentials

All commands after that will implicitly use the system proxy, so you can issue commands like the above Invoke-WebRequest http://example.org or Update-Help and they will “just work”.