我在 Windows 8 系统上使用 PowerShell v3,在网上找不到任何好的资源来解释我遇到的这个问题。我有以下脚本:
$CIMProperty = Get-CimInstance win32_OperatingSystem
$OS = [PSCustomObject]@{
Caption = $CIMProperty.Caption
InstallDate = $CIMProperty.InstallDate
}
$Asset = [PSCustomObject]@{
Name = "TSZ"
OperatingSystem = $OS
}
$Asset | ConvertTo-Xml
当我运行它时,我收到以下错误:
ConvertTo-Xml : 文件意外结束。以下元素未关闭: 对象。第 9 行,位置 12。在 C:\Users\Ben\SkyDrive\Documents\Scripting\Inventory\Troubleshooting-Compact.ps1:12 char:10 + $Asset | ConvertTo-Xml + ~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [ConvertTo-Xml], XmlException + FullyQualifiedErrorId : System.Xml.XmlException,Microsoft.PowerShell.Commands.ConvertToXmlCommand
我做了一堆测试,发现只有当我的 $OS 对象有多个属性时才会发生这种情况。为每个属性定义类型名似乎没有帮助。如果我使用自己的数组,$OS = "test","123"
则没有错误。
如果我设置$OS = Get-CimInstance win32_OperatingSystem
没有错误,并且使用 Export-CliXml cmdlet 也可以。但是,我正在尝试生成格式良好的XML
文档,该文档在显示在自定义 XML 查看器中之前需要最少的处理。