Operating System Deployment in the Cloud

OSDCloud is a method of deploying Windows 10 x64 over the internet using the OSD PowerShell Module. I started this project from bits and pieces that I had put together to Deploy a clean OS from a PowerShell script. Once I had this working with local content, I worked to get the OS and Drivers from the Internet, all from WinPE

Downloading Large Files

A big hurdle was how to download a 4GB Windows 10 ESD file from the Internet, and Curl was the answer. In PowerShell, Curl is an Alias for Invoke-WebRequest ... but it's not quite the same.

For starters, Invoke-WebRequest is very slow ...

But it can be sped up by removing the Progress of the Download, but that has its own problems because I have no clue how long things are going to take

$ProgressPreference = 'SilentlyContinue'

And finally, saving the WebRequest in memory might be a challenge in WinPE too ... but luckily Microsoft decided to support Curl.exe in Windows 10. In my testing, adding the Windows 10 Curl.exe to WinPE solved all of my issues with Invoke-WebRequest

PowerShell Gallery

Solving the problem of getting PowerShell Gallery in WinPE was not a show stopper, but it allows for updating the OSD PowerShell Module in WinPE without having to rebuild a new Boot.wim, so it makes things much easier to rebuild. As it turns out, this was rather easy to fix. You can read all about making it work here

GitHub OSDCloud

Two days after solving the PowerShell Gallery issue, I was able to image a computer with my PowerShell Script saved in a GitHub repository

PowerShell Module OSDCloud

A few days later I moved away from GitHub to run the OS Deployment completely from the OSD PowerShell Module

Next Steps

I'll be working on adding Cumulative Updates ... but other than that, I'm wide open. To be honest, I think the goal of imaging a computer from the Cloud is complete