我正在努力将我的对象列表导出到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=<userdn>
<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
我很感激任何建议。
答案 0 :(得分:1)
尝试:
$accessList | Export-Csv -Path $Outputfile
当您指定-InputObject $accessList
时,您说要使用 THIS 对象。这实际上是导出数组,这是你所看到的。当您使用$accessList | Export-CSV ...
时,它会将数组内的项目沿管道发送,以便导出所有项目。
另外,您可以添加-NoTypeInformation
以删除TYPE ...
行。