Public/Functions/split/Save-ZTIDriverPack.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
function Save-ZTIDriverPack { [CmdletBinding()] param ( [string]$Manufacturer = (Get-MyComputerManufacturer -Brief), [string]$Product = (Get-MyComputerProduct) ) #================================================= # Make sure we are running in a Task Sequence first #================================================= try { $TSEnv = New-Object -COMObject Microsoft.SMS.TSEnvironment } catch { $TSEnv = $false } if ($TSEnv -eq $false) { Write-Warning "This functions requires a running Task Sequence" Start-Sleep -Seconds 5 Continue } #================================================= # Get some Task Sequence variables #================================================= $DEPLOYROOT = $TSEnv.Value("DEPLOYROOT") $DEPLOYDRIVE = $TSEnv.Value("DEPLOYDRIVE") # Z: $OSVERSION = $TSEnv.Value("OSVERSION") # WinPE $RESOURCEDRIVE = $TSEnv.Value("RESOURCEDRIVE") # Z: $OSDISK = $TSEnv.Value("OSDISK") # E: $OSDANSWERFILEPATH = $TSEnv.Value("OSDANSWERFILEPATH") # E:\MININT\Unattend.xml $TARGETPARTITIONIDENTIFIER = $TSEnv.Value("TARGETPARTITIONIDENTIFIER") # [SELECT * FROM Win32_LogicalDisk WHERE Size = '134343553024' and VolumeName = 'Windows' and VolumeSerialNumber = '90D39B87'] #================================================= # Set some Variables # DeployRootDriverPacks are where DriverPacks must be staged # This is not working out so great at the moment, so I would suggest # not doing this yet #================================================= $DeployRootDriverPacks = Join-Path $DEPLOYROOT 'DriverPacks' $OSDiskDrivers = Join-Path $OSDISK 'Drivers' #================================================= # Create $OSDiskDrivers #================================================= if (-NOT (Test-Path -Path $OSDiskDrivers)) { New-Item -Path $OSDiskDrivers -ItemType Directory -Force -ErrorAction Ignore | Out-Null } if (-NOT (Test-Path -Path $OSDiskDrivers)) { Write-Warning "Could not create $OSDiskDrivers" Start-Sleep -Seconds 5 Continue } #================================================= # Start-Transcript #================================================= Start-Transcript -OutputDirectory $OSDiskDrivers #================================================= # Copy-PSModuleToFolder # The OSD Module needs to be available on the next boot for Specialize # Drivers to work #================================================= if ($env:SystemDrive -eq 'X:'){ Copy-PSModuleToFolder -Name OSD -Destination "$OSDISK\Program Files\WindowsPowerShell\Modules" } #================================================= # Get-MyDriverPack #================================================= Write-Verbose -Verbose "Processing function Get-MyDriverPack" if ($Manufacturer -in ('Dell','HP','Lenovo','Microsoft')) { $GetMyDriverPack = Get-MyDriverPack -Manufacturer $Manufacturer -Product $Product } else { $GetMyDriverPack = Get-MyDriverPack -Product $Product } if (-NOT ($GetMyDriverPack)) { Write-Warning "There are no DriverPacks for this computer" Start-Sleep -Seconds 5 Continue } #================================================= # Get-MyDriverPack #================================================= Write-Verbose -Verbose "Name: $($GetMyDriverPack.Name)" Write-Verbose -Verbose "Product: $($GetMyDriverPack.Product)" Write-Verbose -Verbose "FileName: $($GetMyDriverPack.FileName)" Write-Verbose -Verbose "Url: $($GetMyDriverPack.Url)" $OSDiskDriversFile = Join-Path $OSDiskDrivers $GetMyDriverPack.FileName #================================================= # MDT DeployRoot DriverPacks # See if the DriverPack we need exists in $DeployRootDriverPacks #================================================= $DeployRootDriverPack = @() $DeployRootDriverPack = Get-ChildItem "$DeployRootDriverPacks\" -Include $GetMyDriverPack.FileName -File -Recurse -Force -ErrorAction Ignore | Select-Object -First 1 if ($DeployRootDriverPack) { Write-Verbose -Verbose "Source: $($DeployRootDriverPack.FullName)" Write-Verbose -Verbose "Destination: $OSDiskDriversFile" Copy-Item -Path $($DeployRootDriverPack.FullName) -Destination $OSDiskDrivers -Force } if (Test-Path $OSDiskDriversFile) { Write-Verbose -Verbose "DriverPack is in place and ready to go" Stop-Transcript Continue } #================================================= # Curl # Make sure Curl is available #================================================= if ((-NOT (Test-Path "$env:SystemRoot\System32\curl.exe")) -and (-NOT (Test-Path "$OSDISK\Windows\System32\curl.exe"))) { Write-Warning "Curl is required for this to function" Start-Sleep -Seconds 5 Continue } if ((-NOT (Test-Path "$env:SystemRoot\System32\curl.exe")) -and (Test-Path "$OSDISK\Windows\System32\curl.exe")) { Copy-Item -Path "$OSDISK\Windows\System32\curl.exe" -Destination "$env:SystemRoot\System32\curl.exe" -Force } if (-NOT (Test-Path "$env:SystemRoot\System32\curl.exe")) { Write-Warning "Curl is required for this to function" Start-Sleep -Seconds 5 Continue } #================================================= # OSDCloud DriverPacks # Finally, let's download the file and see where this goes #================================================= Save-WebFile -SourceUrl $GetMyDriverPack.Url -DestinationDirectory $OSDiskDrivers -DestinationName $GetMyDriverPack.FileName if (Test-Path $OSDiskDriversFile) { Write-Verbose -Verbose "DriverPack is in place and ready to go" Stop-Transcript } else { Write-Warning "Could not download the DriverPack. Sorry!" Stop-Transcript } #================================================= } |