Powershell - 将对象列表导出为CSV

时间:2014-08-11 06:57:04

标签: xml object powershell csv

我正在努力将我的对象列表导出到csv文件。 到目前为止,我有以下代码:

$accessListPath = "example.cfg"
$Outputfile = "ScriptOutput.csv"

$accessList = @()
$xml = [XML](Get-Content -Path $accessListPath)

$xml | Select-Xml -xpath "//value" | %{  

    $accessList += New-Object -TypeName PSObject -Property @{
        Rolle = $_.Node.roll
        Gruppe = $_.Node.group
        ADString =  $_.Node."#text".trim()
    }
} 

Export-Csv -InputObject $accessList -Path $Outputfile 

相应的XML文件是:

<?xml version="1.0" encoding="UTF-8"?>
<ldap>
    <host>x.x.x.x
        <users>
            <user>DC=Example,DC=internal</user>
        </users>
        <rights>
            <var>distinguishedName
                <value>CN=...,OU=user,OU=...
                    <roll>2</roll>
                </value>
                <value>CN=...,OU=user,OU=...
                    <roll>5</roll>
                    <roll>18</roll>
            </value>
            <value>CN=John Doe*
                <roll>9</roll>
            </value>
            <value>CN=Domain Admin*
                <group>Administrator</group>
                <roll>1</roll>
            </value>
            <value>CN=...,OU=user,...
                <group>Example Group</group>
                <roll>8</roll>
                <roll>12</roll>
                <roll>14</roll>
                <roll>15</roll>
            </value>
        </var>
        <var>search:member=&lt;userdn&gt;
            <value>CN=group1*
                <group>01 Group XY</group>
                <roll>1</roll>
            </value>
            <value>CN=Client1,OU=*
                <roll>3</roll>
            </value>
            <value>CN=...,OU=*
                <roll>5</roll>
            </value>
            <value>CN=ImportantClient06*
                <group>06ImportantGroup</group>
                <roll>8</roll>
                <roll>11</roll>
                <roll>12</roll>
            </value>
        </var>
    </rights>
</host>

这是.csv文件中的输出:

  

TYPE System.Object []
  计数长度LongLength Rank SyncRoot IsReadOnly IsFixedSize IsSynchronized   49 49 49 1 System.Object [] False True False

我很感激任何建议。

1 个答案:

答案 0 :(得分:1)

尝试:

$accessList | Export-Csv -Path $Outputfile

当您指定-InputObject $accessList时,您说要使用 THIS 对象。这实际上是导出数组,这是你所看到的。当您使用$accessList | Export-CSV ...时,它会将数组内的项目沿管道发送,以便导出所有项目。

另外,您可以添加-NoTypeInformation以删除TYPE ...行。

相关问题