A while ago I created a script that I can run as embedded script in Altiris that creates a Server Manager Answer File (for Server 2008).

I could have simply done an echo >answer.xml but I wanted a well formed XML that could be read and displayed in an XML editor or Internet Explorer when needed.

I use the Microsoft.XMLDom object in the script the create the XML and I think the code is easy to understand so I will just show it here:

vbnet Download
' Create Server Manager answer file
'vbscript

Dim xmlDoc : Set xmlDoc = CreateObject("Microsoft.XMLDom")
' <!--l version="1.0" encoding="UTF-16" standalone="no-->
Dim objIntro: Set objIntro = xmlDoc.createProcessingInstruction("xml","version='1.0'")
xmlDoc.insertBefore objIntro, xmlDoc.childNodes(0)

' Root element
Dim root : Set root = xmlDoc.createElement("ServerManagerConfiguration")

'Choose install or remove here
root.setAttribute "Action", "Install"
root.setAttribute "xmlns", "http://schemas.microsoft.com/sdm/Windows/ServerManager/Configuration/2007/1"
xmlDoc.appendChild root

' Start Here
Add "Feature", "RSAT-ADDS"
Add "Role", "Web-Server"
Add "RoleService", "Web-Metabase"
Add "RoleService", "Web-ISAPI-Ext"
Add "RoleService", "Web-Lgcy-Mgmt-Console"
Add "RoleService", "Web-Basic-Auth"
Add "RoleService", "Web-Digest-Auth"
Add "RoleService", "Web-Windows-Auth"
Add "RoleService", "Web-Dyn-Compression"
Add "Feature", "RPC-over-HTTP-Proxy"
Add "RoleService", "Web-Http-Redirect"

' Save
Save "answer.xml"

Sub Add(NodeType, Name)
	Set Child = xmlDoc.createElement(NodeType)
	Child.SetAttribute "Id", Name
	root.appendChild(Child)
End Sub

Sub AddAttrib(NodeType, Name, Attribute, Value)
	Set Child = xmlDoc.createElement(NodeType)
	Child.SetAttribute "Id", Name
	Child.SetAttribute Attribute, Value
	root.appendChild(Child)
End Sub

Sub Save(Filename)
	Dim rdr : Set rdr = CreateObject("MSXML2.SAXXMLReader")
    Dim wrt : Set wrt = CreateObject("MSXML2.MXXMLWriter")

    'Set properties on the XML writer.
    wrt.byteOrderMark = True
    wrt.omitXMLDeclaration = False
    wrt.indent = True

    'Set the XML writer to the SAX content handler.
    Set rdr.contentHandler = wrt
    Set rdr.dtdHandler = wrt
    Set rdr.errorHandler = wrt
    rdr.putProperty "http://xml.org/sax/properties/lexical-handler", wrt
    rdr.putProperty "http://xml.org/sax/properties/declaration-handler", wrt

    'Parse the DOMDocument object.
    rdr.parse xmlDoc

    'And Save it
    Dim fso : Set fso = CreateObject("scripting.filesystemobject")
    Dim objXMLFile: Set objXMLFile = fso.CreateTextFile(FileName, True, True)
    objXMLFile.Write(wrt.output)
    objXMLFile.Close
End Sub

Sample output:

AnswerXML