Powershell: как использовать Format-Table с данными XML - PullRequest
6 голосов
/ 21 марта 2012
<tickets type="array">
    <ticket>
        <assigned-user-id type="integer">123</assigned-user-id>
        <closed type="boolean">true</closed>
        <creator-id type="integer">177522</creator-id>
        <number type="integer">306</number>
        <state>resolved</state>
        <tag nil="true"/>
        <title>
        title text 1
        </title>
        <updated-at type="datetime">2012-03-14T13:13:11+11:00</updated-at>
        <user-id type="integer">96438</user-id>
        <version type="integer">3</version>
        <user-name>Username</user-name>
    </ticket>
</tickets>

Я новичок в Powershell и нахожу вопрос по xml и format-table. Данный выше xml файл. Если я запускаю скрипт ниже для отображения заявок в таблице, значение «число», «закрыто» не может быть показано

$t = [xml](new-object system.net.webclient).downloadstring($xmlfilepath)
$t.tickets.ticket | Format-Table -Property title, state, user-name, url, number, closed

Return:

title            state       user-name       number       closed                                      
-----            -----       ---------       ------       ------                                
title text 1     resolved    Username        number       closed   
title text 2     resolved    Username        number       closed   

Это единственный способ, которым я должен использовать foreach и selectSingleNode("ticket").get_InnerXml(), чтобы получить все значения?

Спасибо.

1 Ответ

6 голосов
/ 10 апреля 2012

Если вы заметили, что эти узлы имеют атрибуты, вам нужно будет получить доступ к данным узла. попробуйте следующее:

$t.tickets.ticket | Format-Table -AutoSize -Property title, state, user-name, url,
@{Label="number"; Expression={$_.number."#text"}},
@{Label="closed"; Expression={$_.closed."#text"}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...