Ever have a Task Sequence in MDT which you customized and configured to use a specific driver profile, then having to create a second one just for another model and you have to copy everything over?
Well, I did and didn’t like it.
So according to Johan Arwidmark [if you’re into MDT and don’t already know this guy, get to know him!], this is possible in various ways.
Now while I used his approach, I didn’t like the fact that it wasn’t easily re-usable and I still had to provide various data myself.
And I’m lazy, so I don’t want that!
As mentioned in my previous MDT related post, do note that I have 2 important variables [MdtDrive & MdtRoot] configured within my PowerShell profile on my MDT server, so please make sure to also predefine these to use the script.
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 |
#requires -Modules MicrosoftDeploymentToolkit [cmdletbinding()] param ( [Parameter(Position=0,Mandatory=$true)] [string]$NewTaskName, [Parameter(Position=1,Mandatory=$true)] [string]$NewTaskID ) begin { #region Declaring variables $TaskPath = "$($MdtDrive):\Task Sequences" $ControlPath = "$MDtroot\Control" $OSPath = "$($MdtDrive):\Operating Systems" #endregion #region Verbose output of declared variables and parameters Write-Verbose "New Task Name is '$NewTaskName'" Write-Verbose "New Task ID is '$NewTaskID'" Write-Verbose "Task Sequence Path is '$TaskPath'" Write-Verbose "Task Sequence xml files can be found under '$ControlPath'" Write-Verbose "Operating System path is '$OSPath'" #endregion } process { Write-Verbose 'Finding available OS Images' $OS = Get-ChildItem -Path $OSPath | Out-GridView -PassThru -Title "Select required OperatingSystem" Write-Verbose "Creating new Task Sequence with OS '$($OS.Name)'" try { Import-MDTTaskSequence -Template client.xml -name $NewTaskName -ID $NewTaskID -OperatingSystemPath "$OSPath\$($OS.Name)" -Path $TaskPath -Version 1.0 -ErrorAction Stop Write-Verbose 'Finding available Task Sequences to copy' $OldTask = Get-ChildItem -Path $ControlPath -Directory | Sort-Object Name | Select-Object Name,FullName | Out-GridView -PassThru -Title "Select Old TaskSequence" Write-Verbose "Copying contents from task sequence '$($OldTask.Name)' to '$NewTaskName'" $null = Copy-Item -Path "$ControlPath\$($OldTask.Name)\ts.xml" -Destination "$ControlPath\$NewTaskID" -Force if (Test-Path -Path "$ControlPath\$NewTaskID\ts.xml"){ Write-Output "Task Sequence details copied from '$($OldTask.Name)' to '$NewTaskName'" } else { Write-Warning "Unable to copy Task Sequence from '$($OldTask.Name)' . $($_.Exception.Message)" } } catch { Write-Warning "Unable to create new Task Sequence. $($_.Exception.Message)" } } |
Happy Scripting! 🙂



