Download Ubuntu ISO using PowerShell

My previous post Unattended Ubuntu 16.04 Setup Using PowerShell was about building Ubuntu Server Virtual Machine completely in unattended mode on Hyper-V. To do that we need at least a server operating system ISO file of particular Ubuntu version. I wanted to plug this script/functions in earlier script however to keep it simple, I didn’t do that. I will try to merge these script soon to come up one single script later.

In this post, I will share how to get a particular Ubuntu ISO file using PowerShell script. You can download the complete script from my github repository.

This script has 4 functions as listed below,

  • Get-AvailableUbuntuVersions
  • Get-UbuntuDownloadUrl
  • Save-UbuntuISO
  • Test-Checkum

Since I have explained functions in script manual, I will just talk briefly about them here. For more information please refer the script documentation.

Get-AvailableUbuntuVersions – This is main function which gets called after running the script. This function reads and extracts the available version details. It then presents the available version to user and let user select from it.Using the choice of user it then calls Get-UbuntuDownloadUrl to build/identify the download URL for the selected version.

Get-UbuntuDownloadUrl – Generate the download URL. Based on the ubuntu version selected by user, this function generates the download URL for the iso and MD5SUMS file. Before exiting it calls the Save-UbuntuISO to start the download.

Save-UbuntuISO – Download the ISO file. This function gets called from inside Get-UbuntuDownloadUrl with 2 parameters download link and target location to save file locally. It uses BITS module to initiate, monitor and close the download of ISO file. Since the BITS job is set to Asynchronous this function will keep track of the progress of the job and ensure BITs transfer is resumed appropriately in case of failures.

Test-Checkum – Check the MD5Sum of the downloaded file. Once the download is complete, It gets the input parameters (sourceMD5SumsFileURL, sourcefile, targetFile) from Save-UbuntuISO for the iso file which is getting downloaded. It checks if the checksum matches and gives appropriate status message back to user.


This slideshow requires JavaScript.


  • This script is tested on PowerShell 5, Windows 10 Pro version 1703 (creator update).
  • I expect it to work on PowerShell 3 and above without any issues.
  • Currently this script will not work on PowerShell for Linux as it needs BITS modules. I will be testing wget or other similar options for the Linux capability. Stay tuned if you are interested to see that update. Having said, I will be glad hear your updates/comments if you test and find the alternatives before I could try myself.