注意:我正在使用ConvertTo-XML,不能使用Export-Clixml:
我创建一个简单的PSObject:
$a = New-Object PSObject -Property @{
Name='New'
Server = $null
Database = $null
UserName = $null
Password = $null
}
Run Code Online (Sandbox Code Playgroud)
然后我使用ConvertTo-XML以下方法将其转换为XML :
$b = $a | Convertto-XML -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)
XML看起来像这样:
<?xml version="1.0"?>
<Objects>
<Object>
<Property Name="Password" />
<Property Name="Name">New</Property>
<Property Name="Server" />
<Property Name="UserName" />
<Property Name="Database" />
</Object>
</Objects>
Run Code Online (Sandbox Code Playgroud)
我无法找出点符号或XPath查询来提取属性/元素并转换$b回原始PSObject.
Jos*_*osh 17
你可以使用XPath轻松完成这项工作.虽然PowerShell通常使得使用XML非常简单,但在这种情况下,我认为使用严格的PowerShell语法的格式非常粗略.
filter XmlProperty([String]$Property) {
$_.SelectSingleNode("/Objects/Object/Property[@Name='$Property']").InnerText
}
$Name = $b | Xmlproperty Name
$Server = $b | XmlProperty Server
# etc...
Run Code Online (Sandbox Code Playgroud)
编辑:通常对包含一个或多个Object元素的XML文档执行此操作,您可以执行以下操作:
function ConvertFrom-Xml($XML) {
foreach ($Object in @($XML.Objects.Object)) {
$PSObject = New-Object PSObject
foreach ($Property in @($Object.Property)) {
$PSObject | Add-Member NoteProperty $Property.Name $Property.InnerText
}
$PSObject
}
}
ConvertFrom-Xml $b
Run Code Online (Sandbox Code Playgroud)