Download Files Through Authenticating Proxy with PowerShell
1st Method:
$source = "https://www.7-zip.org/a/7z1900-x64.exe";
$dest = "C:\Temp\7z1900-x64.exe";
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$WebClient = New-Object System.Net.WebClient;
$WebProxy = New-Object System.Net.WebProxy("http://proxy:8080",$true);
$Credentials = (New-Object Net.NetworkCredential("USERNAME","PASSWORD","domain.com")).GetCredential("http://proxy","80", "KERBEROS");
#$Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$WebProxy.Credentials = $Credentials;
$WebClient.Proxy = $WebProxy;
$WebClient.DownloadFile($source,$dest);Alternative Methods:
New-Item -ItemType Directory -Force -Path C:\Temp # Create Temp folder if it doesn't already exist
$proxy="http://proxy:8080";
$exclusionList="localhost;*.domain.local;10.*"
# Set winhttp proxy for PowerShell
netsh winhttp set proxy $proxy $exclusionList
# Prepare PowerShell to Use Default Credentials
[system.net.webrequest]::defaultwebproxy = New-Object system.net.webproxy($proxy)
[system.net.webrequest]::defaultwebproxy.credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
[system.net.webrequest]::defaultwebproxy.BypassProxyOnLocal = $true
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Download using the most efficient method
$url = "https://www.7-zip.org/a/7z1900-x64.exe"
$temp = "C:\Temp\7z1900-x64.exe"
Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $temp
Or:
$source = "https://www.7-zip.org/a/7z1900-x64.msi";
$dest = "C:\Temp\7z1900-x64.msi";
$browser = New-Object System.Net.WebClient
$browser.Proxy.Credentials =[System.Net.CredentialCache]::DefaultNetworkCredentials;
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$browser.DownloadFile($source,$dest);
Or:
$source = "https://www.7-zip.org/a/7z1900-x64.msi";
$dest = "C:\Temp\7z1900-x64.msi";
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
(new-object System.Net.WebClient).DownloadFile($source,$dest)
Or:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
[Net.WebRequest]::DefaultWebProxy.Credentials = [Net.CredentialCache]::DefaultCredentials; `
iex ((New-Object Net.WebClient).DownloadString('https://www.7-zip.org/a/7z1900-x64.msi'))
Or:
$page = (new-object net.webclient)
$page.UseDefaultCredentials = $True
$Page.DownloadString('https://www.7-zip.org/a/7z1900-x64.msi')