Partilhar via


Sorting MDT's lists of applications, task sequences, patches, etc.

It seems to be a common request:  You want the MDT Deployment Wizard to show items sorted alphabetically.  So here's a simple script to do that:

' First parameter:  XML file name
' Second parameter: name of the element to sort on, e.g. Name (case-sensitive)

If WScript.Arguments.Count <> 2 then
    WScript.Echo "Usage: cscript.exe SortXML.vbs <filename> <node to sort on>"
    WScript.Echo "Sample: cscript.exe SortXML.vbs C:\Distribution\Control\Applications.xml Name"
    WScript.Quit
End if

' First load the specified XML file
Set oXML = CreateObject("MSXML2.DOMDocument")
oXML.PreserveWhiteSpace = true
oXML.Async = false
If not oXML.Load(WScript.Arguments(0)) then
    WScript.Echo "Unable to load XML file " & WScript.Arguments(0) & ", aborting"
    WScript.Quit
End if

' Populate the XSL transform

Set oXSL = CreateObject("MSXML2.DOMDocument")

oXSL.loadXML "<xsl:stylesheet version=""1.0"" xmlns:xsl=""https://www.w3.org/1999/XSL/Transform"" >" & _
    "    <xsl:template match=""@*|node()""><xsl:copy><xsl:apply-templates select=""@*|node()""><xsl:sort select=""" & WScript.Arguments(1) & """ /></xsl:apply-templates></xsl:copy></xsl:template>" & _
    "</xsl:stylesheet>"

' Transform the XML and save it back

oXML.transformNodeToObject oXSL, oXML
oXML.Save WScript.Arguments(0)

Save this as "SortXML.vbs" and then you can do things like this (substituting appropriate paths for your environment):

cscript.exe SortXML.vbs C:\Distribution\Control\Applications.xml FullName

cscript.exe SortXML.vbs C:\Distribution\Control\TaskSequences.xml Name

cscript.exe SortXML.vbs C:\Distribution\Control\Drivers.xml Name

For safety, make sure you have a backup copy of the file before you do this.  And don't do this while the Deployment Workbench is running, as it could overwrite your sorted file.

Comments

  • Anonymous
    January 01, 2003
    got it working as suggested - thanks.

  • Anonymous
    January 01, 2003
    Yes, you can create a task sequence using the "custom" task sequence template that does this.  The only limitation:  If you need to perform any reboots, this custom task sequence (initiated from the full OS by mapping a drive to the deployment share and running LiteTouch.vbs) doesn't set up the autologon or startup group entries necessary to resume the task sequence, so you'd have to run LiteTouch.wsf again manually or add an additional step to set up the machine to do autologon.

  • Anonymous
    January 01, 2003
    During deployment we can present the user with options to install applications.  Is it possible to be able to call that list of applications dialog post deployment.  We heard from clients it would be nice to be able for someone to call a script to bring that up again to install other apps later if they wanted to.

  • Anonymous
    January 01, 2003
    What if I just want the dialog up for the user that shows the list of apps to install after MDT has finished?

  • Anonymous
    January 01, 2003
    I would like to request that this feature be added to MDT 2010 Update 1. ;) Thanks, Dan

  • Anonymous
    January 01, 2003
    Thank you for the script.  It is quite helpful.

  • Anonymous
    June 02, 2016
    I can't get this script work. First it was copy-pasting weird characters from the HTML, now it errors out at oXML.transformNodeToObject. Is there a newer version? I see some recent comments on this thread--perhaps it is popular all of a sudden?