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.
[…] Nel mio repository su GitHub https://github.com/ermannog/PowerShell/tree/master/Set-Wallpaper ho salvato alcuni scripts che permettono di impostare lo sfondo del desktop tramite immagini provenienti da Internet, sfruttando le indicazioni del mio precedente post Comandi nativi Windows per il download di file: […]