Maybe I’m missing something here, but it seems like the answer is simple – DISM.


There’s a couple ways to do it, but the simplest might be:

Boot to your boot image command prompt

(adjust to fit)
Dism /online /get-drivers > d:\BootDriverInfo.txt
(use /image:<path to boot.wim> instead of /online to check it from your running 
Windows)

Or,

Dism /mount-wim /wimfile:d:\media\sources\boot.wim /index:1 /mountdir:c:\mount

Dism /image:c:\mount /get-drivers > c:\BootDriverInfo.txt

(commands vary between ADK versions – these were taken from WAIK for W7, aka 
WinPE 3)

Not sure on the export piece because I’ve never tried it, but once you mount 
the PE boot.wim, you _should_ be able to just rip them out of c:\windows\inf 
(assuming you’re going to and from the same version of PE).

I just keep a repository of boot drivers (or go make one if it’s a new build), 
and do a dism /add-drivers:<path> injection after creating the base PE.


Someone please let me know if I’m way off base here…


Matt Varnado | Systems Engineer II
W (214) 572-8226 |  M (214) 815-9833

From: listsad...@lists.myitforum.com [mailto:listsad...@lists.myitforum.com] On 
Behalf Of Art Flores
Sent: Wednesday, August 10, 2016 1:04 PM
To: mssms@lists.myitforum.com
Subject: [EXTERNAL]RE: [mssms] Move Drivers from one boot image to another.

Another option using PoSH.

Import boot image drivers from existing boot image
https://gallery.technet.microsoft.com/Import-boot-image-drivers-c43e04da

From: listsad...@lists.myitforum.com<mailto:listsad...@lists.myitforum.com> 
[mailto:listsad...@lists.myitforum.com] On Behalf Of Todd Hemsell
Sent: Wednesday, August 10, 2016 10:46 AM
To: mssms@lists.myitforum.com<mailto:mssms@lists.myitforum.com>
Subject: [mssms] Move Drivers from one boot image to another.

What I do is open up the existing boot image and then open the SMSPROV.log in 
cmtrace. THEN click on the drivers tab of the boot image. Once you can see all 
of the drivers go to cmtrace and pause it.

open the smsprov.log
Open the boot image.
Find the line like this
select  all 
SMS_Driver.LocaleID,SMS_Driver.CI_ID,SMS_Driver.CI_UniqueID,SMS_Driver.DisplayName
from fn_ListDriverCIs_List(1033) AS SMS_Driver  where 
(((((((((((((((((((((((((((((((((((((((((((((((SMS_Driver.CI_ID = 16900711 OR 
SMS_Driver.CI_ID = 16900712) OR SMS_Driver.CI_ID = 16900713) OR 
SMS_Driver.CI_ID = 16900714) OR SMS_Driver.CI_ID = 16900715) OR 
SMS_Driver.CI_ID = 16900716) OR SMS_Driver.CI_ID = 16900717) OR 
SMS_Driver.CI_ID = 16900718) OR SMS_Driver.CI_ID = 16900719) OR 
SMS_Driver.CI_ID = 16900720) OR SMS_Driver.CI_ID = 16900721) OR 
SMS_Driver.CI_ID = 16900722) OR SMS_Driver.CI_ID = 16900723) OR 
SMS_Driver.CI_ID = 16900724) OR SMS_Driver.CI_ID = 16900725) OR 
SMS_Driver.CI_ID = 16900726) OR SMS_Driver.CI_ID = 16900727) OR 
SMS_Driver.CI_ID = 16900728) OR SMS_Driver.CI_ID = 16900729) OR 
SMS_Driver.CI_ID = 16900730) OR SMS_Driver.CI_ID = 16900731) OR 
SMS_Driver.CI_ID = 16900732) OR SMS_Driver.CI_ID = 16900733) OR 
SMS_Driver.CI_ID = 16900734) OR SMS_Driver.CI_ID = 16900735) OR 
SMS_Driver.CI_ID = 16900736) OR SMS_Driver.CI_ID = 16900737) OR 
SMS_Driver.CI_ID = 16900738) OR SMS_Driver.CI_ID = 16900739) OR 
SMS_Driver.CI_ID = 16900742) OR SMS_Driver.CI_ID = 16900743) OR 
SMS_Driver.CI_ID = 16900744) OR SMS_Driver.CI_ID = 16900747) OR 
SMS_Driver.CI_ID = 16900748) OR SMS_Driver.CI_ID = 16900749) OR 
SMS_Driver.CI_ID = 17003831) OR SMS_Driver.CI_ID = 17074423) OR 
SMS_Driver.CI_ID = 17074424) OR SMS_Driver.CI_ID = 17074425) OR 
SMS_Driver.CI_ID = 17074426) OR SMS_Driver.CI_ID = 17074427) OR 
SMS_Driver.CI_ID = 17074428) OR SMS_Driver.CI_ID = 17074429) OR 
SMS_Driver.CI_ID = 17074430) OR SMS_Driver.CI_ID = 17074431) OR 
SMS_Driver.CI_ID = 17074432) OR SMS_Driver.CI_ID = 17074433) OR 
SMS_Driver.CI_ID = 17074434)

You copy that SQL and open SQL management studio. Then replace the "Select" 
portion (not the from or where clause) with this

'Add-BootImageDriver -SiteCode XXX -SiteServer SITESERVER -DriverCI ' + CAST ( 
SMS_Driver.CI_ID AS nvarchar(10)) + ' -BootImagePackageID 
"NEWBOOTIMAGEPACKAGEID"' AS [PS],

The SQL output will look like this
Add-BootImageDriver -SiteCode XXX -SiteServer USHDCCMXXX01 -DriverCI 16777410 
-BootImagePackageID XXX00134
Add-BootImageDriver -SiteCode XXX -SiteServer USHDCCMXXX01 -DriverCI 16777413 
-BootImagePackageID XXX00134
Add-BootImageDriver -SiteCode XXX -SiteServer USHDCCMXXX01 -DriverCI 16777414 
-BootImagePackageID XXX00134
Add-BootImageDriver -SiteCode XXX -SiteServer USHDCCMXXX01 -DriverCI 16777415 
-BootImagePackageID XXX00134
Add-BootImageDriver -SiteCode XXX -SiteServer USHDCCMXXX01 -DriverCI 16777416 
-BootImagePackageID XXX00134
Add-BootImageDriver -SiteCode XXX -SiteServer USHDCCMXXX01 -DriverCI 16777417 
-BootImagePackageID XXX00134
Add-BootImageDriver -SiteCode XXX -SiteServer USHDCCMXXX01 -DriverCI 16777418 
-BootImagePackageID XXX00134
Add-BootImageDriver -SiteCode XXX -SiteServer USHDCCMXXX01 -DriverCI 16777419 
-BootImagePackageID XXX00134
Add-BootImageDriver -SiteCode XXX -SiteServer USHDCCMXXX01 -DriverCI 16777420 
-BootImagePackageID XXX00134

Then open a SCCM PS prompt and paste this in there.
Function Add-BootImageDriver
{
    [CmdLetBinding()]
    Param(
    [Parameter(Mandatory=$True,HelpMessage="Please Enter Site Server Site 
code")]
              $SiteCode,
    [Parameter(Mandatory=$True,HelpMessage="Please Enter Site Server Name")]
              $SiteServer,
    [Parameter(Mandatory=$True,HelpMessage="Please Enter Driver CI_ID")]
              $DriverCI,
    [Parameter(Mandatory=$True,HelpMessage="Please Enter Boot Image Packge ID")]
              $BootImagePackageID
         )

    #Get the Boot image and the Driver
    $BootImageQuery = Get-WmiObject -Namespace "Root\SMS\Site_$SiteCode" -Class 
SMS_BootImagePackage -ComputerName $SiteServer -Filter 
"PackageID='$BootImagePackageID'"
    $DriverQuery = Get-WmiObject -Namespace "Root\SMS\Site_$SiteCode" -Class 
SMS_Driver -ComputerName $SiteServer -Filter "CI_ID='$DriverCI'"

    #Read the Lazy properties also
    $BootImageQuery.Get()

    #New Driver details
    $NewBootImageDriver = 
([WMIClass]"\\$SiteServer\root\SMS\Site_$($SiteCode):SMS_Driver_Details<file:///\\$SiteServer\root\SMS\Site_$($SiteCode):SMS_Driver_Details>").CreateInstance()
    $NewBootImageDriver.ID = $DriverQuery.CI_ID
    $NewBootImageDriver.SourcePath = $DriverQuery.ContentSourcePath

    #Add the driver details
    $BootImageQuery.ReferencedDrivers += $NewBootImageDriver.psobject.baseobject
    $BootImageQuery.Put()

}

then copy the output of the SQL query and paste it into the powershell command


________________________________
Confidentiality Warning: This transmission is intended only for the proper 
recipient and may contain information that is confidential and/or privileged. 
If you received this message in error or are not the intended recipient, (A) 
you are hereby notified that the dissemination, distribution or copying of this 
message is strictly prohibited, (B) please notify the sender at either the 
e-mail address or telephone number above, and (C) delete this email from your 
computer. Thank you.

Reply via email to