OSD++ is a better way to get input from the user and populate task sequences variables. It retrieves values from the registry, queries WMI, and/or prompts the user for input via an input box or a drop-down box. All values retrieved are stored in internal OSD++ variables that can be used as replacement variables in further data retrieval. They can also be written out to the registry or used to set task sequence variables.
OSD++ variables can also be persisted in a file that can be loaded by OSD++. This is useful during refresh scenarios to display the interface to the user before the task sequence begins, save their responses to the variable file, and then using another run of OSD++, output the saved responses to task sequence variables.