Banish GUIDs from CustomSettings.ini in MDT
Another of my pet peeves about MDT CustomSettings.ini rules is that fact that you have to define entries for Applications and ManditoryApplications as GUIDs. Here is the example for Applications from the MDT help file:
[Settings]
Priority=Default[Default]
Applications001={1D7DF331-47B7-472C-87B3-442597EC2F7D}
Applications002={9d2b8999-5e4d-4f3d-bb05-edaaf4fe5628}
In order to get the GUID for an application, you have to open the XML file which holds the Applications definitions - \<DeploymentShare>\Control\Applications.xml. (Yes, the Deployment Workbench does display the GUID in the Applications list. However, you cannot select the GUID to copy and paste it into CustomSettings.ini.) When you open Applications.xml in a text editor the first thing you notice is that the contents of the file in all on a single line.
So now you are in for a bunch of scrolling right and hunting or turning on word wrap to find the GUID that you need. You can alleviate this by first opening the XML file in XML Notepad (https://xmlnotepad.codeplex.com/) and then clicking Save. This will “prettify” the XML making it easier to find entries like so:
However, wouldn’t it be nicer if we could just use the Name of the Applications instead of the GUIDs?
To that end I have created a User Exit script, MDTExitNameToGuid.vbs, that allows just that. There are two main functions that allow it to be used in two different ways. If you have a property or a small number of List Item entries, use the ConvertNameToGUID function. Here is an example:
[Settings]
Priority=Default, NameToGuid
Properties=[NameToGuid]
UserExit=MDTExitNameToGuid.vbs
Applications001=#ConvertNameToGUID("Contoso Application A 1.0", "Applications")#
Applications002=#ConvertNameToGUID("Contoso Application B 2.0", "Applications")#
The parameters for the ConvertNameToGUID function are (<Item Name in Deployment Workbench>, <Control folder XML file base name>).
If you have more than one or two entries for a List Item (like Applications or ManditoryApplications), then using the ConvertNameToGUIDInList function is more efficient. This converts all text entries in the List Item to their corresponding GUIDs (and logs if no matching GUID is found for any entries). Here is an example:
[Settings]
Priority=Default, NameToGuid
Properties=ConvertList[NameToGuid]
UserExit=MDTExitNameToGuid.vbs
Applications001=Contoso Application A 1.0
Applications002=Contoso Application B 2.0
ConvertList=#ConvertNameToGUIDInList("Applications", "Applications")#
The parameters for the ConvertNameToGUIDInList function are (<List Item name>, <Control folder XML file base name>).
(Note: You can find a list of the MDT XML files in the Support Files topic in the MDT help file.)
Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the Terms of Use .
This post was contributed by Michael Murgolo, a Senior Consultant with Microsoft Services - U.S. East Region.
Comments
- Anonymous
May 25, 2011
The comment has been removed - Anonymous
December 24, 2015
Lol at the above comment. That's what I do, works fine. I don't mind it.