65 lines
2.1 KiB
PowerShell
65 lines
2.1 KiB
PowerShell
# this is where the document will be saved:
|
|
$Path = "E:\DB-XML-Test\inventory.xml"
|
|
|
|
# get an XMLTextWriter to create the XML
|
|
$XmlWriter = New-Object System.XMl.XmlTextWriter($Path,$Null)
|
|
|
|
# choose a pretty formatting:
|
|
$xmlWriter.Formatting = 'Indented'
|
|
$xmlWriter.Indentation = 1
|
|
$XmlWriter.IndentChar = "`t"
|
|
|
|
# write the header
|
|
$xmlWriter.WriteStartDocument()
|
|
|
|
# set XSL statements
|
|
$xmlWriter.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='style.xsl'")
|
|
|
|
# create root element "machines" and add some attributes to it
|
|
$XmlWriter.WriteComment('List of machines')
|
|
$xmlWriter.WriteStartElement('Machines')
|
|
$XmlWriter.WriteAttributeString('current', $true)
|
|
$XmlWriter.WriteAttributeString('manager', 'Tobias')
|
|
|
|
# add a couple of random entries
|
|
for($x=1; $x -le 10; $x++)
|
|
{
|
|
$server = 'Server{0:0000}' -f $x
|
|
$ip = '{0}.{1}.{2}.{3}' -f (0..256 | Get-Random -Count 4)
|
|
|
|
$guid = [System.GUID]::NewGuid().ToString()
|
|
|
|
# each data set is called "machine", add a random attribute to it:
|
|
$XmlWriter.WriteComment("$x. machine details")
|
|
$xmlWriter.WriteStartElement('Machine')
|
|
$XmlWriter.WriteAttributeString('test', (Get-Random))
|
|
|
|
# add three pieces of information:
|
|
$xmlWriter.WriteElementString('Name',$server)
|
|
$xmlWriter.WriteElementString('IP',$ip)
|
|
$xmlWriter.WriteElementString('GUID',$guid)
|
|
|
|
# add a node with attributes and content:
|
|
$XmlWriter.WriteStartElement('Information')
|
|
$XmlWriter.WriteAttributeString('info1', 'some info')
|
|
$XmlWriter.WriteAttributeString('info2', 'more info')
|
|
$XmlWriter.WriteRaw('RawContent')
|
|
$xmlWriter.WriteEndElement()
|
|
|
|
# add a node with CDATA section:
|
|
$XmlWriter.WriteStartElement('CodeSegment')
|
|
$XmlWriter.WriteAttributeString('info3', 'another attribute')
|
|
$XmlWriter.WriteCData('this is untouched code and can contain special characters /\@<>')
|
|
$xmlWriter.WriteEndElement()
|
|
|
|
# close the "machine" node:
|
|
$xmlWriter.WriteEndElement()
|
|
}
|
|
|
|
# close the "machines" node:
|
|
$xmlWriter.WriteEndElement()
|
|
|
|
# finalize the document:
|
|
$xmlWriter.WriteEndDocument()
|
|
$xmlWriter.Flush()
|
|
$xmlWriter.Close() |