在這個 XML 中:
<?xml version="1.0">
<Devices ClientType="Desktop">
<Device HostName="12345-Desktop">
<Parameter Name="DefaultEnvironment" Value="Test" />
<Parameter Name="WorkstationID" Value="T100" />
<Parameter Name="WorkstationAgency" Value="A" />
<Parameter Name="ServerIP_Trn" Value="tng.domain.com" />
<Parameter Name="ServerIP_Stg" Value="stg.domain.com" />
<Parameter Name="Production" Value="TRUE" />
<Parameter Name="Training" Value="FALSE" />
<Parameter Name="Staging" Value="FALSE" />
</Device>
</Devices>
我試圖在一行中提取主機名和 WorkstationID。我想看到的是
12345-Desktop T100
這是我試過的:
[xml]$Config = $wc.DownloadString("http://xmlsource/xmlfile.xml")
$device=$Config.Devices.Device
#to get hostname:
$devices.hostname
#To get parameters:
$devices.parameter | select Name, value | where {$_.name -eq 'WorkstationID'}
如何像上面那樣將兩個輸出組合在一行中?我需要使用 XPath 嗎?
uj5u.com熱心網友回復:
你在正確的軌道上,但你需要一個計算的屬性才能進入陣列:
$devices | Select-Object -Property @(
'HostName'
@{
L = 'WorkstationID'
E = { $PSItem.Parameter.Where{ $PSItem.Name -eq 'WorkstationID' }.Value }
}
)
e:使用Where-Object 來自評論的示例 -
$devices | Select-Object -Property @(
'HostName'
@{
L = 'WorkstationID'
E = { ($_.Parameter | Where-Object Name -eq WorkstationID).Value }
}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397750.html
