Copying $OEM$ files and folders with MDT 2012 Update 1

I mentioned in the blog post at that MDT 2012 Update 1 no longer uses SETUP.EXE to install Windows 7 and above.  One side effect of this is that $OEM$ folders are no longer going to be copied, since that was something that SETUP.EXE did that the MDT LTIApply.wsf script doesn’t handle.

I’ve never been a big fan of using the $OEM$ folder structure, as it’s just as easy to add explicit XCOPY steps into the task sequence.  But for those of you out there that are using them, you can leverage the attached script (see the attachment link below) in your task sequence to do that.

To set this up, first copy the script into your deployment share.  Then, add a new step to the task sequence right after the “Install Operating System” step to run the script.  It should look like this:


Now, it will follow the original MDT logic for locating the appropriate $OEM$ folder to use, checking in this order:

  • %DeployRoot%\Control\%TaskSequenceID%\$OEM$
  • %SourcePath%\$OEM$
  • %DeployRoot%\%Architecture%\$OEM$
  • %DeployRoot%\$OEM$

where %DeployRoot% is the path to the deployment share, %TaskSequenceID% is the ID of the running task sequence (e.g. WIN8), %SourcePath% is the path within the deployment share for the operating system being used, and %Architecture% is either X86 or X64, depending on the boot image being used.  (That’s a bit of a flaw in the original MDT logic since we now support cross-platform deployments – it would choose an X86 $OEM$ folder even if you were deploying an X64 operating system.  That’s probably a good sign that no one is using this option.  Most people use the last one.)

Once it finds a folder, it will look for two folders in that $OEM$ folder and copy them to the appropriate place for the new OS:

  • $1 will be copied to the root of the volume that the new OS image was applied to.
  • $$ will be copied to the Windows folder on the volume that the new OS image was applied to.

The script doesn’t deal with any other folders because it’s too messy to do that from within Windows PE – drive letters aren’t the same as what they would end up being in the full OS.

Comments (19)
  1. Thanks, I'm old school and prefer the $OEM$ for simplicity sake.  

  2. Anonymous says:

    Thanks.  This was helpful!

  3. Anonymous says:

    …Just discovered that MDT 2012 seems to do it without the script.

    I have a '$1' folder within the $OEM$ folder in my MDT 2012 share and it copies across just fine…no errors at the end of deployment…

  4. Anonymous says:

    Nice and simple, but although my $OEM$ content got copied to the client, I had a 'red' failure at the end of the deploy and in the smsts.log file,


    Failed to run the action: Run OEM folders Line.

    Incorrect function. (Error: 00000001; Source: Windows) TSManager 19/10/2012 11:53:54 2024 (0x07E8)

    Sending status message . . . TSManager 19/10/2012 11:53:54 2024 (0x07E8)

    ….not sure whats going on…   :-/

  5. bobdonkey says:

    This didn’t work for me either using MDT 2013….anyone figure this out?

  6. mikecarter_BOXX says:

    Worked perfectly with MDT 2013. Thank you.

  7. Stefan says:

    If this works…. I will be so happy!

  8. Mark Seymour says:

    Thanks for helping with this headache.

    You mention that you prefer using an explicit XCOPY.  Could you give an example of how you xcopy across.

  9. Donald says:

    "You mention that you prefer using an explicit XCOPY.  Could you give an example of how you xcopy across."

    Yes, please do.

  10. Ventrex says:

    Thanks! Great work!

    It helped me to finaly change the CTRL-ALT-DEL to CTRL-ALT-INSERT for VMWare machines.

    Now I only have to check how to copy specific files with WMI filters 😉

  11. jay says:

    Anyone needed to make any changes for MDT 2013?

    My Task Sequence is failing at this step for some reason.

  12. Highly doubtful, but I haven't tried it.

  13. doesnt work in MDT 2013 =( says:

    My $OEM$-Contents doesnt get copied … 🙁 MDT does also not execute this Job :/

  14. Nathan Hughes says:

    Works fine in MDT 2013 . Just add the script after Applying OS..

  15. K2AAB says:

    This may help for those where it’s failing as it was for me too.
    I had used the $OEM$ at first in the root of the deployment share. However if you have multiple IDs you need to create the $OEM$ folder for each task sequence. ie, deploymentshare\$OEM$ and so on
    Hope this helps

  16. K2AAB says:

    Just seen some of my path got stripped out… Should be \depoymentshare$Controldesktop2$OEM$ where desktop2 is the Sequence ID

  17. Jason says:

    It was copying fine for a while but now I am getting the red error at the end as well. The only change I have made is possibly adding folders to the folder that gets copied. I am setting the copy job to continue on error so that it does not break the imaging process.

Comments are closed.

Skip to main content