PowerShell, Web Requests, and Proxies


When making a simple web request is there a way to tell the PowerShell environment to just use your Internet Explorer's proxy settings?

My proxy settings are controlled by a network policy(or script) and I don't want to have to modify ps scripts later on if I don't have to.

Great info from the participants. The final script template that I'll use for this will look something like the following:

$proxyAddr = (get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').ProxyServer
$proxy = new-object System.Net.WebProxy
$proxy.Address = $proxyAddr
$proxy.useDefaultCredentials = $true

$url = "http://stackoverflow.com"
$wc = new-object system.net.WebClient
$wc.proxy = $proxy
$webpage = $wc.DownloadData($url)
$str = [System.Text.Encoding]::ASCII.GetString($webpage)
Write-Host $str

Best Solution

Somewhat better is the following, which handles auto-detected proxies as well:

$proxy = [System.Net.WebRequest]::GetSystemWebProxy()
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials

$wc = new-object system.net.WebClient
$wc.proxy = $proxy
$webpage = $wc.DownloadData($url)

(edit) Further to the above, this definition appears to work fine for me, too:

function Get-Webclient {
    $wc = New-Object Net.WebClient
    $wc.UseDefaultCredentials = $true
    $wc.Proxy.Credentials = $wc.Credentials