2013-07-25 3 views
0

Здравствуйте, я новичок в Powershell, но я все рассмотрел для ответа на этот вопрос, как преобразовать данные XML в CSV-данные в оболочке питания.Преобразование данных XML в CSV powershell

Мои данные XML выглядит следующим образом: я не могу

<SolarWinds_SwitchPortMap Layer2Device="<info>"> 
    <Interfaces> 
      <Interface ifIndex="<data>" CollectionTime="<data>" ConnectorPresent="<data>" Duplex="<data>" HardwareType="<data>" ifAdminStatus="<data>" ifAdminStatustest="<data>" ifAlias="<data>" ifDescr="<data>" MACAddress="<data>" MTU="<data>" ifName="<data>" ifOperStatus="<data>" ifSpeed="<data>" ifType="<data>" ifTypeName="<data>" InBitsSec="<data>" InPktsSec="<data>" LastChange="<data>" LastPacketIn="<data>" LastPacketOut="<data>" ModulePortIndex="<data>" OutBitsSec="<data>" OutPktSec="<data>" Port="<data>" TrunkPort="<data>" /> 
    </Interfaces> 
</Solarwinds_SwitchPortMap> 

получить Powershell, чтобы понять данные XML,

set-location "<program location>" 
.\swspmcmd.exe <info> /xml > "<output_location>\output_data.txt" 
get-content "<output location>\output_data.txt" | select -skip 17 | set-content "<xmldata_location>\xmldata.xml" 
$xml = [xml] (Get-Content "<xmldata_location>\xmldata.xml") 

$xml | convertto-csv -Delimiter:"," -NoTypeInformation 

И он будет возвращать только "SolarWinds_SwitchPortMap" " System.Xml.XmlElement "

и я не понимаю, почему, любая помощь с благодарностью благодарит :).

+1

Вы не можете преобразовать XML в CSV, как, что в связи с принципиально иной структуры (иерархическую vs. табличной) , поэтому вам нужно «вручную» извлечь необходимую информацию из XML и подготовить их для экспорта CSV. На что вы хотите, чтобы CSV выглядел? –

ответ

2

Предполагая, что вы после того, как данные в узле интерфейсов вы могли бы сделать что-то вроде этого:

[xml]$a = @" 
<SolarWinds_SwitchPortMap 
    Layer2Device="info"> 
    <Interfaces> 
      <Interface 
      ifIndex="data" 
      CollectionTime="data" 
      ConnectorPresent="data" 
      Duplex="data" 
      HardwareType="data" 
      ifAdminStatus="data" 
      ifAdminStatustest="data" 
      ifAlias="data" 
      ifDescr="data" 
      MACAddress="data" 
      MTU="data" 
      ifName="data" 
      ifOperStatus="data" 
      ifSpeed="data" 
      ifType="data" 
      ifTypeName="data" 
      InBitsSec="data" 
      InPktsSec="data" 
      LastChange="data" 
      LastPacketIn="data" 
      LastPacketOut="data" 
      ModulePortIndex="data" 
      OutBitsSec="data" 
      OutPktSec="data" 
      Port="data" 
      TrunkPort="data" 
      /> 
    </Interfaces> 
</SolarWinds_SwitchPortMap> 
"@ 

$a | select-xml -xpath "/SolarWinds_SwitchPortMap/Interfaces/Interface" | select -ExpandProperty Node | Export-Csv -NoTypeInformation -Path ./interface.csv 
+0

Спасибо, -ExpandProperty Node, сделал это :) – JasonBluefire

+0

Приятно, это помогло мне с моей собственной проблемой конвертации – MichaelF

Смежные вопросы