Quando si lavora nel campo dell’informatica possono sorgere esigenze di tutti i tipi, anche di dover scaricare i file dalla riga di comando, senza passare dal browser, così vediamo come farlo con PowerShell. Le prove sono state fatte su Windows 11 con PowerShell 7.2.5 e PowerShell 5, se utilizzate versioni precedenti del sistema operativo e di PowerShell potreste non avere a disposizione gli stessi comandi utilizzati nell’articolo e quindi dovrete aggiornarlo.

Il comando da utilizzare per eseguire il download di un file è questo: Invoke-WebRequest -Uri "Indirizzo_Web_File" -OutFile "Cartella_Download:\Nome_File"

Indirizzo_Web_File è l’indirizzo, http o https, del file che vogliamo scaricare e “Cartella_Download:\Nome_File” è il percorso completo e il nome del file che vogliamo assegnargli.

Il comando per il download dell’ultima versione di ITunes diventa quindi questo: Invoke-WebRequest -Uri "https://secure-appldnld.apple.com/itunes12/091-76333-20180329-6D5B026C-32F7-11E8-A675-99BAB071F5CF/iTunes64Setup.exe" -OutFile "D:\Itunes64.exe".

Basta copiarlo e incollarlo nella schermata di PowerShell, premere Invio e attendere il completamento del download.

Come scaricare file direttamente riga comando PowerShell

Ricavare l’indirizzo

Mi potrete domandare “Come faccio a sapere l’indirizzo del file da scaricare?”, molte volte basta cliccare con il tasto destro del mouse sopra il link del download presente nella pagina e copiarlo.

Come scaricare file direttamente riga comando PowerShell

Se il link non è direttamente ricavabile dalla pagina Web lo si può conoscere dalla lista dei download, non serve neanche scaricare completamente il file, basta cliccarci sopra con il tasto destro del mouse per poter copiare l’indirizzo.

Come scaricare file direttamente riga comando PowerShell

Si possono creare delle liste di file da scaricare, uno alla volta, vedrete quindi aprirsi più volte la schermata dei byte scritti o processati.

Come scaricare file direttamente riga comando PowerShell

Quando passate a PowerShell più righe di comando, comparirà un avviso come questo, incollate comunque e date il via ai download.

Come scaricare file direttamente riga comando PowerShell

Uno script più completo, per il download di un singolo file, è come quello che vedete qui di seguito, ha almeno un minimo di controllo e di avviso sulla presenza del file, sulla fine del suo download o eventuali errori.

  • $url = "https://download-installer.cdn.mozilla.net/pub/firefox/releases/101.0.1/win64/it/Firefox%20Setup%20101.0.1.exe"
  • $file = "d:\firefox64bit.exe"
  • try{
  • if ((Test-Path $file) -and (Get-Item $file).length -gt 5kb)
  • {write-host "$file già esiste." }
  • else
  • {
  • [Net.ServicePointManager]::SecurityProtocol = 'Tls12'
  • Invoke-WebRequest $url -OutFile $file -ErrorAction Stop
  • Write-Host "$file è stato scaricato." }
  • }
  • catch [System.Exception] {
  • $httpStatus = $null
  • $tryError = $_.Exception
  • $urlIsValid = $false;
  • Write-Host "C’è stato un errore scaricando $file" }

L’effetto del copia e incolla di queste righe multiple sarà qualcosa del genere.

Come scaricare file direttamente riga comando PowerShell

E’ possibile creare, con Notepad, un file dall’estensione .ps1 che altro non è che uno script, una raccolta di comandi, che potrete eseguire direttamente con PowerShell.

Come scaricare file direttamente riga comando PowerShell

Oppure potete farlo direttamente da PowerShell stesso con il comando .\DownloadFirefox.ps1

Come scaricare file direttamente riga comando PowerShell

Se vi compaiono una serie di errori in rosso, come quelli che vedete nella foto, dovete abilitare l’esecuzione degli script in PowerShell con il comando Set-ExecutionPolicy unrestricted

Come scaricare file direttamente riga comando PowerShell

Conclusioni

Durante le prove fatte, in alcuni casi, il download non partiva subito, inserivo il comando e poi dovevo premere Invio alcune volte prima che partisse. Se proprio non ne voleva sapere non facevo altro che chiudere e riaprire PowerShell perché ritornasse a funzionare.

Non ho ancora avuto modo di analizzare il perché di questo comportamento.