Dans ce tutoriel, je vais expliquer comment télécharger un fichier à l’aide de PowerShell qui se trouve sur un serveur accessible en HTTP ou HTTPS.
Ceci peut être particulièrement utile quand vous administrer un serveur sans interface, où que le seul navigateur installé est Internet Explorer ou encore dans un script.
Il existe plusieurs solution pour télécharger un à l’aide de PowerShell que nous allons voir dans ce tutoriel.
Télécharger un fichier avec Invoke-WebRequest
Nous allons commencer avec le Cmdlet Invoke-WebRequest qui est disponible depuis PowerShell 3.0
Pour utiliser la cmdlet Invoke-WebRequest
, nous devons lui passer au minimum deux paramètres :
-Uri : ce paramètre va contenir l’URL qui l’on souhaite appeler, il n’est pas nécessaire de nommer le paramètre s’il est placé en premier.
-OutFile : l’emplacement et le nom du fichier.
Pour illustrer ce tutoriel, je vais télécharger l’Agent Zabbix à l’url suivante : https://cdn.zabbix.com/zabbix/binaries/stable/6.4/6.4.3/zabbix_agent2-6.4.3-windows-amd64-openssl.msi
Invoke-WebRequest https://cdn.zabbix.com/zabbix/binaries/stable/6.4/6.4.3/zabbix_agent2-6.4.3-windows-amd64-openssl.msi -Outfile C:\Download\zabbix-agent2.msi
La Cmdlet Invoke-WebRequest
peut être également appeler à l’aide d’une alias bien connu des utilisateurs Linux qui est wget
.
Il faut passer les mêmes paramètres, juste remplacer Invoke-WebRequest
par wget
:
wget https://cdn.zabbix.com/zabbix/binaries/stable/6.4/6.4.3/zabbix_agent2-6.4.3-windows-amd64-openssl.msi -Outfile C:\Download\zabbix-agent2.msi
Cette méthode devrait fonctionner le plus part des serveurs et ordinateur Windows.
Télécharger un fichier avec Start-BitsTransfer
La cmdlet Start-BitsTransfer permet de télécharger un fichier en utilisant (BITS) Background Intelligent Transfert Service qui est composant intégré à Windows avec les bénéfices suivants :
- Téléchargement multiple en tâche d’arrière plan
- Reprise en cas d’arrêt
Start-BitTransfert à besoin de deux paramètres :
-Source : Url du fichier à télécharger, le paramètre peut être omis sur l’url est indiquer en première position
-Destination : Emplacement ou le fichier sera enregistré.
Contrairement à
Invoke-WebRequest
, il faut juste indiquer l’emplacement sans le nom du fichier.
Voici comment utiliser Start-BitsTransfer :
Start-BitsTransfer https://releases.ubuntu.com/22.04.2/ubuntu-22.04.2-live-server-amd64.iso -Destination C:\Download
Télécharger un fichier avec New-Object avec PowerShell 2.0
Si vous êtes sur un « vieux » serveur qui n’a pas PowerShell 3.0, il est quand même possible de télécharger un fichier avec PowerShell en utilisant New-Object pour créer un objet System.Net.WebClient disponible dans .NET Framework.
Il existe plusieurs syntaxe pour utiliser cette méthode, en voici une pour télécharger l’agent GLPI disponible à cette url : https://github.com/glpi-project/glpi-agent/releases/download/1.4/GLPI-Agent-1.4-x64.msi
(New-Object System.Net.WebClient).DownloadFile("https://github.com/glpi-project/glpi-agent/releases/download/1.4/GLPI-Agent-1.4-x64.msi","C:\Download\GLPIAgent.msi")
Comment vous pouvez le voir, le second argument comporte le chemin et le nom du fichier.