PowerShell:带有 ConvertTo-XML 输出的自定义属性 XML 标签

2024-03-09

我正在 PowerShell 中创建一个新对象,使用哈希表来设置属性值。然后我想使用 ConvertTo-XML 方法将对象导出为 XML 格式。

$hash = @{            
    Processor = 'Intel'                
    Disk = '500GB'
    Server = 'ABC'
    Serial = '01234'
}                           

$specs = New-Object PSObject -Property $hash
Write-Output ($specs | ConvertTo-XML -notypeinformation).Save("C:\scripts\export.xml")

XML 输出如下:

<Objects>
  <Object>
    <Property Name="Serial">a1b2c3</Property>
    <Property Name="Server">ABC</Property>
    <Property Name="Processor">Intel</Property>
    <Property Name="Disk">500GB</Property>
  </Object>
</Objects>

我想要的是 XML 标签的格式如下:

<Objects>
  <Object>
    <Serial>a1b2c3</Serial>
    <Server>ABC</Server>
    <Processor>Intel</Processor>
    <Disk>500GB</Disk>
  </Object>
</Objects>

然后,如果有一个好的解决方案,是否还有一种方法可以自定义对象标签?

谢谢。


我不认为你能到达那里ConvertTo-Xml。但是,您可以使用here strings去做这个。这是一种低技术含量,但仍然很酷:

$hash = @{            
    Processor = 'Intel'                
    Disk = '500GB'
    Server = 'ABC'
    Serial = '01234'
}                           

@"
<Objects>
  <Object>$(foreach ($kvpair in $hash.GetEnumerator()) {
    "`n    <$($kvpair.Key)>$($kvpair.Value)</$($kvpair.Key)>"
})
  </Object>
</Objects>
"@ > C:\scripts\export.xml

你可以使用XML DOM创建这个文档但这会需要更多工作,对于这样一个简单的文档我认为here string方法效果很好。它也适用于任何类型的文本模板。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerShell:带有 ConvertTo-XML 输出的自定义属性 XML 标签 的相关文章

随机推荐