OSDCloud #8 – WDS Integration

This short post not really about OSDCloud and his pretty. It’s about how an ISO image can be imported into WDS (Windows Deployment Services).

One of my OSDCloud customer has asked me, if the PXE (Preboot Execution Environment) could be supported for OSDCloud imaging. Sure, it can definitely.

The only one challenge, that we cannot import images into WDS in an ISO format. So, let’s convert it into a WIM format. This isn’t a kind of convert process –> let mount your ISO file and make a capture of it. Save it then in WIM format. Done.

 

You can use two different tools:
1. DISM.exe: Windows built-in

DISM /Capture-Image /ImageFile:E:\OSDCLoud_Akos.WIM /CaptureDir:F:\ /Name:OSDCLoud

Your ISO has been mounted in drive letter F: and will be captured aka. saved in E: root.

 

2. IMAGEX.exe: part of the ADK (Windows Assessment and Deployment Kit)

IMAGEX.exe /Capture H: E:\OSDCloud_Akos.WIM "OSDCloud"

Your ISO has been mounted in drive letter H: and will be captured aka. saved in E: root.

Both tool have to run in an elevated shell!

Et voilà:

 

End of the day, the customer made the “standard” WDS setup and config, regarding all of DHCP options which are required. And after a PXE boot over the network, the OSDCloud.wim (!) file will be downloaded from the WDS server and it starts like after the USB boot.

–> End of the USB boot media era (at least for this customer). 😉

 

Happy OSDClouding!

12 Comments


  1. Do you then use an SMB share or web server to host all of your pre-downloaded OS ESDs and Vendor Driver Packs, or does each machine then pull directly from the Internet?

    Reply

    1. ‘B’ 😉
      We only need to grab the boot file and OSDCloud does his magic afterwards. 🙂

      Reply

      1. Oh, I was hoping you were going to give me the solution to imaging 50 machines at once without blowing through a bunch of Internet data 😉 Why else go through the trouble of using PXE over USB?

        Reply

        1. When you are creating the basic OSD image, you can put the ESD URL in it, which is locating internally.
          https://www.osdcloud.com/deploy/wim#findimagefile
          Then create the ISO file and “convert” it into a WIM.

          Using USB doesn’t require an own network infra (like WDS, PXE VLAN), only the right firewall rules.

          Reply

          1. Thanks. What I’m really after is replicating the offline USB model where I can have many different original ESD files and driver packs cached on an SMB, or better yet, local web server. Then set a variable/global variable to have OSDCloud check there before downloading from the official source.


  2. Hi there,

    I’ve tried both methods to generate the WIM from the ISO (DISM and ImageX) – both produce a WIM file but I cannot import them into WDS as a boot image, or an install image – It says not a valid boot image / not a valid install image.

    Any ideas?

    Thanks

    Reply

    1. Did you check the DISM.log? Was the WIM file created successfully?

      Reply

      1. I checked the DISM Log c:\windows\logs\dism\dism.log and I do see some warnings on every file like this:

        2023-06-25 14:18:49, Warning DISM DISM WIM Provider: PID=8052 [AllocNode:(732) -> GetFileStorageTierClass failed] E:\ (HRESULT=0x80070057) – CWimManager::WimProviderMsgLogCallback
        [8052] [0x8144012d]

        So not sure if the WIM Created correctly

        Any ideas?

        Reply

        1. The issue comes when you import the converted WIM file. Please select only the boot.wim file from the ISO (..\sources).
          –> I will update this blog post

          Reply

          1. Hey,

            Took me a while to get back to this, but yes you’re absolutely right – Mounted the ISO, and extracted the boot.wim from the sources folder.

            Added that to WDS and all working perfectly.

            Thanks!


    1. You can only use the following parameters in Start-OSDcloud function:
      ImageFileFullName = $null
      ImageFileItem = $null
      ImageFileName = $null
      ImageFileSource = $null
      ImageFileDestination = $null
      ImageFileUrl = $ImageFileUrl

      “ImageFileOffline” is not anymore usable as a variable. (so far, as I know)

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *