Comandi nativi Windows per il download di file

Talvolta in può essere utile in script scaricare tramite riga di comando un file da Internet senza dover installare tool di terze parti, ma utilizzando solo quello che offre nativamente il sistema. Di seguito elenco una serie di approcci, ma va comunque detto fin da subito che quello più corretto è utilizzare PowerShell.

Metodo 1: Utilizzare BITSAdmin

BITSadmin è il tool che in Windows 7 e Windows 2008 R2 permette la gestione del servizio Background Intelligent Transfer Service (BITS) e che permette anche di scaricare un file:

bitsadmin /transfer DownloadImageFile /download “https://github.com/favicon.ico” “C:\Downloads\ favicon.ico”

Si noti però che in Windows 10 è deprecato e non vi è garanzia che tale tool sia presente nelle future versioni in quanto le stesse funzionalità sono state rese disponibili tramite i BITS PowerShell cmdlets.

Metodo 2: Utilizzare certutil.exe

Certutil è un tool a riga di comando che permette anche implicitamente il download di un file:

certutil.exe -urlcache -split -f “https://github.com/favicon.ico” “github.ico”

Va però precisato che questo è un uso improprio del comando Certutil che viene segnalato da Windows Defender come comportamento sospetto registrando come minaccia grave di tipo Behavior:Win32/Ceprolad.A.

Metodo 3: Utilizzare il cmdlet Invoke-WebRequest disponibile in PowerShell 3.0 o superiore

Tramite il cmdlet Invoke-WebRequest è possibile scaricare i contenuti di una pagina web e quindi anche scaricare un file, di seguito una serie di esempi che possono essere eseguiti anche da un prompt dei comandi:

Powershell Invoke-WebRequest -Uri ‘http://oiswww.eumetsat.org/IPPS/html/latestImages/EUMETSAT_MSG_IR108Color_CentralEurope.jpg’ -UseDefaultCredentials -OutFile ‘C:\Downloads\ EUMETSAT_MSG_IR108Color_CentralEurope.jpg’

Download mediante il proxy impostato sul sistema

Powershell Invoke-WebRequest -Uri ‘http://oiswww.eumetsat.org/IPPS/html/latestImages/EUMETSAT_MSG_IR108Color_CentralEurope.jpg’ -UseDefaultCredentials -Proxy ([System.Net.WebRequest]::GetSystemWebproxy()).GetProxy(%URI%) -ProxyUseDefaultCredentials -OutFile ‘C:\Downloads\ EUMETSAT_MSG_IR108Color_CentralEurope.jpg’

Download mediante il proxy impostato sul sistema utilizzando TSL

Powershell [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri ‘https://umbra.nascom.nasa.gov/images/latest_aia_211.gif’ -Proxy ([System.Net.WebRequest]::GetSystemWebproxy()).GetProxy(%URI%) -UseDefaultCredentials -ProxyUseDefaultCredentials -OutFile ‘C:\Downloads\latest_aia_211.gif’

Il cmdlet Invoke-WebRequest ammette anche i seguenti alias iwr, wget e curl.