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 SubSample output:
